From 82c85ef8536ee718b0cf92dbda8ee4109a46d733 Mon Sep 17 00:00:00 2001 From: Marie Ramlow Date: Sun, 12 Oct 2025 11:40:59 +0200 Subject: [PATCH] openrgb-plugin-effects: build with Qt 6 --- .../op/openrgb-plugin-effects/package.nix | 23 +++- .../op/openrgb-plugin-effects/qt5compat.patch | 114 ++++++++++++++++++ 2 files changed, 131 insertions(+), 6 deletions(-) create mode 100644 pkgs/by-name/op/openrgb-plugin-effects/qt5compat.patch diff --git a/pkgs/by-name/op/openrgb-plugin-effects/package.nix b/pkgs/by-name/op/openrgb-plugin-effects/package.nix index 70f96877ad79..ce0c60f496d3 100644 --- a/pkgs/by-name/op/openrgb-plugin-effects/package.nix +++ b/pkgs/by-name/op/openrgb-plugin-effects/package.nix @@ -2,11 +2,12 @@ lib, stdenv, fetchFromGitLab, - libsForQt5, openrgb, glib, openal, pkg-config, + kdePackages, + fetchpatch, }: stdenv.mkDerivation (finalAttrs: { @@ -21,20 +22,30 @@ stdenv.mkDerivation (finalAttrs: { fetchSubmodules = true; }; + patches = [ + # Fix Qt6 issues in OpenRGBPluginsFont.cpp + (fetchpatch { + url = "https://gitlab.com/OpenRGBDevelopers/OpenRGBEffectsPlugin/-/commit/e952b0ed390045d4f4adec8e74b3126c2f8abcab.patch"; + hash = "sha256-xMsnVyrn/Cv2x2xQtAnPb5HJc+WolNx4v7h0TkTj9DU="; + }) + ./qt5compat.patch + ]; + postPatch = '' # Use the source of openrgb from nixpkgs instead of the submodule rm -r OpenRGB ln -s ${openrgb.src} OpenRGB ''; - nativeBuildInputs = with libsForQt5; [ - qmake + nativeBuildInputs = [ pkg-config - wrapQtAppsHook + kdePackages.wrapQtAppsHook + kdePackages.qmake ]; - buildInputs = with libsForQt5; [ - qtbase + buildInputs = [ + kdePackages.qtbase + kdePackages.qt5compat glib openal ]; diff --git a/pkgs/by-name/op/openrgb-plugin-effects/qt5compat.patch b/pkgs/by-name/op/openrgb-plugin-effects/qt5compat.patch new file mode 100644 index 000000000000..926c34945419 --- /dev/null +++ b/pkgs/by-name/op/openrgb-plugin-effects/qt5compat.patch @@ -0,0 +1,114 @@ +Commit ID: 20f227f4ef942e2ead5a3a684248c2da48c979bc +Change ID: rwlwzspvylkypuqoornwzvuvpuzorvso +Author : Alexey Sokolov (2025-07-21 22:34:37) +Committer: Marie Ramlow (2025-10-12 12:05:01) + + Fix build with Qt6 using core5compat + + Updated to add Qt5 backwards compatibility by Adam Honse + +diff --git a/Effects/Ambient/RectangleSelector.cpp b/Effects/Ambient/RectangleSelector.cpp +index 8f28ddcbcc..d8b4f56a1d 100644 +--- a/Effects/Ambient/RectangleSelector.cpp ++++ b/Effects/Ambient/RectangleSelector.cpp +@@ -1,6 +1,5 @@ + #include "RectangleSelector.h" + #include +-#include + #include + + RectangleSelector::RectangleSelector(QWidget* parent) +@@ -57,7 +56,7 @@ + + QPainter painter(this); + +- texture.setDevicePixelRatio(devicePixelRatioF() / qApp->desktop()->devicePixelRatioF()); ++ texture.setDevicePixelRatio(devicePixelRatioF() / qApp->primaryScreen()->devicePixelRatio()); + + painter.setPen(QColor(0, 0, 0, 128)); + painter.setBrush(Qt::NoBrush); +@@ -69,7 +68,7 @@ + for(QScreen *screen : QApplication::screens()) + { + QRect geometry = screen->geometry(); +- qreal ratio = screen->devicePixelRatio() / qApp->desktop()->devicePixelRatioF(); ++ qreal ratio = screen->devicePixelRatio() / qApp->primaryScreen()->devicePixelRatio(); + QRect physical_geometry(geometry.x(), geometry.y(), std::lrint((qreal) geometry.width() * ratio), lrint((qreal) geometry.height() * ratio)); + + if(physical_geometry.contains(rect.center())) +@@ -92,7 +91,7 @@ + for(QScreen *screen : QApplication::screens()) + { + QRect geometry = screen->geometry(); +- qreal ratio = screen->devicePixelRatio() / qApp->desktop()->devicePixelRatioF(); ++ qreal ratio = screen->devicePixelRatio() / qApp->primaryScreen()->devicePixelRatio(); + + screen_geometries.emplace_back(geometry.x(), geometry.y(), + std::lrint((qreal) geometry.width() * ratio), +diff --git a/Effects/Shaders/GLSLHighlighter.h b/Effects/Shaders/GLSLHighlighter.h +index 7e9f21423b..ca9bf42c3c 100644 +--- a/Effects/Shaders/GLSLHighlighter.h ++++ b/Effects/Shaders/GLSLHighlighter.h +@@ -2,6 +2,7 @@ + #define GLSLHIGHLIGHTER_H + + #include ++#include + + class GLSLHighlighter : public QSyntaxHighlighter + { +diff --git a/OpenRGBEffectPage.cpp b/OpenRGBEffectPage.cpp +index 0d6e4ab0fb..4b756cf63c 100644 +--- a/OpenRGBEffectPage.cpp ++++ b/OpenRGBEffectPage.cpp +@@ -38,7 +38,7 @@ + | Extra options and custom widgets | + \*-----------------------------------------------*/ + ui->ExtraOptions->addWidget(effect); +- ui->ExtraOptions->setMargin(0); ++ ui->ExtraOptions->setContentsMargins(0, 0, 0, 0); + effect->setParent(ui->extra_settings); + + InitUi(); +diff --git a/OpenRGBEffectsPlugin.pro b/OpenRGBEffectsPlugin.pro +index 3e53316519..fec852f88c 100644 +--- a/OpenRGBEffectsPlugin.pro ++++ b/OpenRGBEffectsPlugin.pro +@@ -1,4 +1,10 @@ +-QT += gui widgets core ++QT += gui widgets core opengl ++ ++if(greaterThan(QT_MAJOR_VERSION, 5)) { ++QT += \ ++ core5compat \ ++} ++ + DEFINES += OPEN_RGB_EFFECTS_PLUGIN_LIBRARY + TEMPLATE = lib + +diff --git a/SaveProfilePopup.cpp b/SaveProfilePopup.cpp +index 7297dad8b7..4fa837235f 100644 +--- a/SaveProfilePopup.cpp ++++ b/SaveProfilePopup.cpp +@@ -2,8 +2,8 @@ + #include "ui_SaveProfilePopup.h" + #include "OpenRGBEffectSettings.h" + +-#include +-#include ++#include ++#include + + SaveProfilePopup::SaveProfilePopup(QWidget *parent) : + QWidget(parent), +@@ -12,8 +12,8 @@ + ui->setupUi(this); + + // only letters or numbers, - _ and . +- QRegExp re("^[\\w\\-_.]+$"); +- QRegExpValidator *validator = new QRegExpValidator(re, this); ++ QRegularExpression re("^[\\w\\-_.]+$"); ++ QRegularExpressionValidator *validator = new QRegularExpressionValidator(re, this); + ui->filename->setValidator(validator); + + std::vector filenames = OpenRGBEffectSettings::ListProfiles();