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

2.6: merge upstream master #150

Merged
merged 3,695 commits into from
Jan 25, 2025
Merged

2.6: merge upstream master #150

merged 3,695 commits into from
Jan 25, 2025

Conversation

daschuer
Copy link
Member

@daschuer daschuer commented Jan 19, 2025

This is a VCPKG update for our upcoming Mixxx 2.6-beta

I consider these changes significant:

  • Qt 6.5.3 -> 6.8.1
  • libusb 1.0.26 -> 1.0.27 (new API)
  • rubberband 3.3.0 -> 4.0.0 (new API)

I have pinned taglib to 1.13.1 until mixxxdj/mixxx#12790 is fixed

Here is the full list of Updates (* = indirect dependencies)

    ableton-link 3.0.6#1 -> 3.1.2 
  * asio 1.28.1 -> 1.32.0
    benchmark  1.8.3 -> 1.9.1
    egl-registry 2022-09-20 -> 2024-01-25
    ffmpeg[...] 6.0#2 -> 7.1#2
    freetype[brotli,bzip2,core,png,zlib]  2.12.1#4 -> 2.13.3	 
  * harfbuzz[core,freetype] 8.3.0#1 -> 10.2.0
    icu[core,tools] 73.1#2 -> 74.2#4
    liblo 0.31#4 -> 0.32
  * libpng 1.6.45 -> 0.16.4#3
  * libpq[...] 16.0 -> 16.4
    libusb 1.0.26.11791#1 -> 1.0.27#2
    lilv 0.24.10#2 -> 0.24.24#1																   
  * lv2  1.18.2#1-> 1.18.10#1
  * lz4 1.9.4#1 -> 1.10.0
  * mpg123 1.31.3#3 -> 1.32.9#1
    ms-gsl 4.0.0 -> 4.1.0
  * opengl-registry 2022-09-29 -> 2024-02-10#1
  * openssl 3.1.3 -> 3.4.0#1
    opus 1.4 -> 1.5.2
  * pcre2[...] 10.42#2 -> 10.43
  * pkgconf 1.8.0#5-> 2.3.0
    protobuf 3.21.12#1 -> 5.29.2 
    qt5compat[...] 6.5.3 -> 6.8.1
    qtbase[...] 6.5.3#2 -> 6.8.1#1
    qtdeclarative 6.5.3 -> 6.8.1
    qtkeychain-qt6 0.14.1#1 -> 0.14.3
  * qtshadertools  6.5.3 -> 6.8.1
  * qttools[core,designer,linguist] 6.5.3 -> 6.8.1
    qttranslations[core,default-features] 6.5.3 -> 6.8.1
    rubberband 3.3.0 -> 4.0.0
  * serd 0.30.4#2 -> 0.32.2
  * sleef 3.5.1#4 -> 3.7
  * sord 0.16.4#2 -> 0.16.16
    soundtouch  2.3.2#3 -> 2.3.3
  * sqlite3[core,json1] 3.43.1 -> 3.47.2
  * sratom 0.6.4#2 -> 0.6.16#1
    wavpack 5.6.0 -> 5.7.0
  * zlib 1.3 -> 1.3.1
  * zstd 1.5.5#1 -> 1.5.6

AenBleidd and others added 30 commits December 19, 2024 13:03
Signed-off-by: Vitalii Koshura <lestat.de.lionkur@gmail.com>
Co-authored-by: Jon <v-zhli17@microsoft.com>
…deflate (microsoft#42694)

Co-authored-by: JonLiu1993 <63675417+JonLiu1993@users.noreply.github.com>
Co-authored-by: Mengna-Li <543250287@qq.com>
Co-authored-by: Monica <v-liumonica@microsoft.com>
Co-authored-by: Monica <v-liumonica@microsoft.com>
@JoergAtGithub
Copy link
Member

I tried to use it in a local build, but got the following Qt asserts during CMake configuration:

1> [CMake] -- Found Protobuf: D:/mixxx/buildenv/mixxx-deps-2.6-x64-windows-d99ec98/installed/x64-windows/tools/protobuf/protoc.exe (found version "29.2.0") 
1> [CMake] rgbsignal_qml.frag -> rgbsignal_qml.frag.qsb exposed as :/shaders/rgbsignal_qml.frag.qsb
1> [CMake] CMake Warning (dev) at buildenv/mixxx-deps-2.6-x64-windows-d99ec98/installed/x64-windows/share/Qt6Core/Qt6CoreMacros.cmake:3355 (message):
1> [CMake]   Qt policy QTP0004 is not set: You need qmldir files for each extra
1> [CMake]   directory that contains .qml files for your module.  Check
1> [CMake]   https://doc.qt.io/qt-6/qt-cmake-policy-qtp0004.html for policy details.
1> [CMake]   Use the qt_policy command to set the policy and suppress this warning.
1> [CMake] 
1> [CMake] Call Stack (most recent call first):
1> [CMake]   buildenv/mixxx-deps-2.6-x64-windows-d99ec98/installed/x64-windows/share/Qt6Qml/Qt6QmlMacros.cmake:3299 (__qt_internal_setup_policy)
1> [CMake]   buildenv/mixxx-deps-2.6-x64-windows-d99ec98/installed/x64-windows/share/Qt6Qml/Qt6QmlMacros.cmake:896 (qt6_target_qml_sources)
1> [CMake]   buildenv/mixxx-deps-2.6-x64-windows-d99ec98/installed/x64-windows/share/Qt6Qml/Qt6QmlMacros.cmake:1232 (qt6_add_qml_module)
1> [CMake]   CMakeLists.txt:3205 (qt_add_qml_module)
1> [CMake] This warning is for project developers.  Use -Wno-dev to suppress it.
1> [CMake] 
1> [CMake] CMake Warning (dev) at buildenv/mixxx-deps-2.6-x64-windows-d99ec98/installed/x64-windows/share/Qt6Core/Qt6CoreMacros.cmake:3355 (message):
1> [CMake]   Qt policy QTP0004 is not set: You need qmldir files for each extra
1> [CMake]   directory that contains .qml files for your module.  Check
1> [CMake]   https://doc.qt.io/qt-6/qt-cmake-policy-qtp0004.html for policy details.
1> [CMake]   Use the qt_policy command to set the policy and suppress this warning.
1> [CMake] 
1> [CMake] Call Stack (most recent call first):
1> [CMake]   buildenv/mixxx-deps-2.6-x64-windows-d99ec98/installed/x64-windows/share/Qt6Qml/Qt6QmlMacros.cmake:3299 (__qt_internal_setup_policy)
1> [CMake]   buildenv/mixxx-deps-2.6-x64-windows-d99ec98/installed/x64-windows/share/Qt6Qml/Qt6QmlMacros.cmake:896 (qt6_target_qml_sources)
1> [CMake]   buildenv/mixxx-deps-2.6-x64-windows-d99ec98/installed/x64-windows/share/Qt6Qml/Qt6QmlMacros.cmake:1232 (qt6_add_qml_module)
1> [CMake]   CMakeLists.txt:3239 (qt_add_qml_module)
1> [CMake] This warning is for project developers.  Use -Wno-dev to suppress it.
1> [CMake] 
1> [CMake] -- DEBUG_ASSERT statements have been enabled because DEBUG_ASSERTIONS_FATAL is ON.
1> [CMake] CMake Error at buildenv/mixxx-deps-2.6-x64-windows-d99ec98/scripts/buildsystems/vcpkg.cmake:720 (_install):
1> [CMake]   _install IMPORTED_RUNTIME_ARTIFACTS given target
1> [CMake]   "Qt6::QWindowsVistaStylePlugin" which does not exist.
1> [CMake] Call Stack (most recent call first):
1> [CMake]   CMakeLists.txt:3590 (install)
1> [CMake] -- Found rubberband: D:/mixxx/buildenv/mixxx-deps-2.6-x64-windows-d99ec98/installed/x64-windows/lib/rubberband.lib (found version "4.0.0") 

@JoergAtGithub
Copy link
Member

After setting QTP0004 policy and commenting out QWindowsVistaStylePlugin I got a fully working Mixxx build with this buildenv.
There is a new QWindows11Style, but I did not find out how to use it instead of the Vista style. Without styling, the UI looks really outdated - like Win95, but technically everything seems to be displayed correct.

@daschuer
Copy link
Member Author

Please Try: mixxxdj/mixxx#14200

@JoergAtGithub
Copy link
Member

I had to add

    if(QT_KNOWN_POLICY_QTP0004)
        qt6_policy(SET QTP0004 NEW)
    endif()

at line:
https://github.com/mixxxdj/mixxx/blob/0b888895ee4327a13ec48912a66c991d9aeff283/CMakeLists.txt#L3175
to build with Qt6.8

But I guess the correct fix would be changing the QML directory structure instead - but I'm not familar with this.

@daschuer
Copy link
Member Author

It sounds like that it is mandatory to decide how the build system should behave:
https://doc.qt.io/qt-6/qt-cmake-policy-qtp0004.htmlhttps://doc.qt.io/qt-6/qt-cmake-policy-qtp0004.html

For my understanding, we need to mimic the NEW behaviour for older QT builds manually if we want to have it consistently.

@daschuer
Copy link
Member Author

For NEW, we need to either change our directory structure or back-port:
qt/qtdeclarative@6314d30
into our build system since our implicit minimum is Qt 6.4 determined by Ubuntu 24.04 Noble and Qt 6.8 will land into a LTS 26.04.

@JoergAtGithub
Copy link
Member

I think we should delete the no longer needed triple overlays for macOS.

@daschuer
Copy link
Member Author

All are still needed. Do you see untracked leftovers on your working directory?

@JoergAtGithub
Copy link
Member

I can confirm that this updated buildenv works on Windows! But the skinning especially of dialogs like preferences looks odd with Qt6.8s QModernWindowsStylePlugin. Should I merge it? Sooner or later we need to do this step anyway.
@ronso0 WDYT?

@JoergAtGithub
Copy link
Member

Qt6.5 buildenv with QWindowsVistaStylePlugin:
grafik

Qt6.8 buildenv with QModernWindowsStylePlugin:
grafik

@daschuer
Copy link
Member Author

How does QWindows11Style look like?

@JoergAtGithub
Copy link
Member

What do you mean with QWindows11Style?

@daschuer
Copy link
Member Author

The Qt 6.7 changelog mentiones a new "QWindows11Style"

Out of curious:
Did you adjust all these locations:
https://github.com/search?q=repo%3Amixxxdj%2Fmixxx%20QWindowsVistaStyle&type=code

In the CMakeCache.txt form this VCPKG I still see Windows Vista:

//Android
FEATURE_style_android:BOOL=OFF

//Fusion
FEATURE_style_fusion:BOOL=ON

//macOS
FEATURE_style_mac:BOOL=OFF

//QStyleSheetStyle
FEATURE_style_stylesheet:BOOL=ON

//Windows
FEATURE_style_windows:BOOL=ON

//Windows11
FEATURE_style_windows11:BOOL=ON

//WindowsVista
FEATURE_style_windowsvista:BOOL=ON

@daschuer
Copy link
Member Author

Ah QModernWindowsStylePlugin contains now both styles:

  • Windows Vista
  • Windows 11

Are you one windows 11?

You may try to set the environment variable
QT_STYLE_OVERRIDE=windows
QT_STYLE_OVERRIDE=windowsvista
QT_STYLE_OVERRIDE=windows11

See:

# Link the shared module Qt6\plugins\styles\qmodernwindowsstyled.dll

build Qt6\plugins\styles\qmodernwindowsstyled.dll: CXX_MODULE_LIBRARY_LINKER__QModernWindowsStylePlugin_Debug src\plugins\styles\modernwindows\CMakeFiles\QModernWindowsStylePlugin.dir\QModernWindowsStylePlugin_autogen\mocs_compilation.cpp.obj src\plugins\styles\modernwindows\CMakeFiles\QModernWindowsStylePlugin.dir\main.cpp.obj src\plugins\styles\modernwindows\CMakeFiles\QModernWindowsStylePlugin.dir\qwindowsvistastyle.cpp.obj src\plugins\styles\modernwindows\CMakeFiles\QModernWindowsStylePlugin.dir\qwindows11style.cpp.obj src\plugins\styles\modernwindows\CMakeFiles\QModernWindowsStylePlugin.dir\qwindowsvistaanimation.cpp.obj src\plugins\styles\modernwindows\CMakeFiles\QModernWindowsStylePlugin.dir\qwindowsthemedata.cpp.obj src\plugins\styles\modernwindows\CMakeFiles\QModernWindowsStylePlugin.dir\QModernWindowsStylePlugin_resource.rc.res || bin\Qt6Cored.dll bin\Qt6Guid.dll bin\Qt6Widgetsd.dll bin\cmake_automoc_parser.exe bin\moc.exe src\corelib\Core_sync_headers src\gui\Gui_sync_headers src\plugins\styles\modernwindows\QModernWindowsStylePlugin_autogen src\plugins\styles\modernwindows\QModernWindowsStylePlugin_autogen_timestamp_deps src\widgets\Widgets_sync_headers
  LANGUAGE_COMPILE_FLAGS = /nologo /DWIN32 /D_WINDOWS /utf-8 /GR /EHsc /MP  /D_DEBUG /MDd /Z7 /Ob0 /Od /RTC1  -MDd
  LINK_FLAGS = /machine:x64 /nologo    /debug /INCREMENTAL  -DYNAMICBASE -NXCOMPAT -LARGEADDRESSAWARE -CETCOMPAT
  LINK_LIBRARIES = gdi32.lib  user32.lib  uxtheme.lib  lib\Qt6Widgetsd.lib  lib\Qt6Guid.lib  lib\Qt6Cored.lib  mpr.lib  userenv.lib  d3d11.lib  dxgi.lib  dxguid.lib  d3d12.lib  kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib
  OBJECT_DIR = src\plugins\styles\modernwindows\CMakeFiles\QModernWindowsStylePlugin.dir
  POST_BUILD = cd .
  PRE_LINK = cd .
  TARGET_COMPILE_PDB = src\plugins\styles\modernwindows\CMakeFiles\QModernWindowsStylePlugin.dir\
  TARGET_FILE = Qt6\plugins\styles\qmodernwindowsstyled.dll
  TARGET_IMPLIB = Qt6\plugins\styles\qmodernwindowsstyled.lib
  TARGET_PDB = Qt6\plugins\styles\qmodernwindowsstyled.pdb
``

@JoergAtGithub
Copy link
Member

Adding
QApplication::setStyle("windowsvista");
in the constrctor of MixxxApplication solved the issue. Now Mixxx looks with this Qt6,8 buildenv as before.

@daschuer
Copy link
Member Author

On which windows are you? Maybe we just saw the windows 11 style?

@JoergAtGithub
Copy link
Member

Yes, this is Qt's windows11 style emulation.
As the Qt application style is just a single setting to be applied in Mixxx, I merge this now! Thank you!

@JoergAtGithub JoergAtGithub merged commit cce5c19 into mixxxdj:2.6 Jan 25, 2025
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.