commit:     937f03b7fe4af6130b4f338d6c7d317163ff6b1b
Author:     James Le Cuirot <chewi <AT> gentoo <DOT> org>
AuthorDate: Fri Mar 15 22:53:46 2024 +0000
Commit:     James Le Cuirot <chewi <AT> gentoo <DOT> org>
CommitDate: Fri Mar 15 22:54:22 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=937f03b7

games-util/lgogdownloader: Add Qt6 support with patch

Closes: https://bugs.gentoo.org/926661
Signed-off-by: James Le Cuirot <chewi <AT> gentoo.org>

 .../lgogdownloader/files/lgogdownloader-qt6.patch  | 73 ++++++++++++++++++++++
 ...r-3.12.ebuild => lgogdownloader-3.12-r1.ebuild} | 31 ++++++---
 .../lgogdownloader/lgogdownloader-9999.ebuild      | 27 +++++---
 3 files changed, 117 insertions(+), 14 deletions(-)

diff --git a/games-util/lgogdownloader/files/lgogdownloader-qt6.patch 
b/games-util/lgogdownloader/files/lgogdownloader-qt6.patch
new file mode 100644
index 000000000000..5d1652bcbdd7
--- /dev/null
+++ b/games-util/lgogdownloader/files/lgogdownloader-qt6.patch
@@ -0,0 +1,73 @@
+From 3f223684cbe1367c68b2b68301eeaaf644a4c0be Mon Sep 17 00:00:00 2001
+From: James Le Cuirot <[email protected]>
+Date: Thu, 14 Mar 2024 22:12:02 +0000
+Subject: [PATCH] Add support for Qt6 (as well as Qt5)
+
+No actual code changes were necessary.
+
+I have partly followed
+https://doc.qt.io/qt-6/cmake-qt5-and-qt6-compatibility.html, but the
+versionless targets only work from Qt 5.15 onwards. The suggested
+workaround chooses 5 over 6 and does not appear to work properly when
+one of the required components is missing. Using the versionless
+approach with an additional variable for the targets seems to work best.
+
+If necessary, Qt 5 can be forced over 6 by passing
+`-DCMAKE_DISABLE_FIND_PACKAGE_Qt6=ON`.
+
+I have tested this by tweaking the code to force the GUI to appear.
+---
+ CMakeLists.txt | 20 +++++++++++++++-----
+ 1 file changed, 15 insertions(+), 5 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 0fe7568..9f489c1 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -45,8 +45,12 @@ file(GLOB SRC_FILES
+   )
+ 
+ if(USE_QT_GUI)
+-  find_package(Qt5Widgets CONFIG REQUIRED)
+-  find_package(Qt5WebEngineWidgets CONFIG REQUIRED)
++  set(QT Qt6)
++  find_package(Qt6 COMPONENTS Widgets WebEngineWidgets CONFIG)
++  if(NOT Qt6_FOUND)
++    set(QT Qt5)
++    find_package(Qt5 REQUIRED COMPONENTS Widgets WebEngineWidgets CONFIG)
++  endif()
+ 
+   file(GLOB QT_GUI_SRC_FILES
+     src/gui_login.cpp
+@@ -140,11 +144,17 @@ file(REMOVE ${CMAKE_BINARY_DIR}/test_atomic.cpp)
+ 
+ if(USE_QT_GUI)
+   target_link_libraries(${PROJECT_NAME}
+-    PRIVATE Qt5::Widgets
+-    PRIVATE Qt5::WebEngineWidgets
++    PRIVATE ${QT}::Widgets
++    PRIVATE ${QT}::WebEngineWidgets
+   )
+ endif(USE_QT_GUI)
+ 
++if(Qt6_FOUND)
++  set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 17)
++else()
++  set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 11)
++endif(Qt6_FOUND)
++
+ if(MSVC)
+   # Force to always compile with W4
+   if(CMAKE_CXX_FLAGS MATCHES "/W[0-4]")
+@@ -154,7 +164,7 @@ if(MSVC)
+   endif()
+ elseif(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX OR 
CMAKE_CXX_COMPILER_ID MATCHES "Clang")
+   # Update if necessary
+-  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Wextra 
-Wno-long-long -fexceptions")
++  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wno-long-long 
-fexceptions")
+ endif()
+ 
+ set(INSTALL_BIN_DIR bin CACHE PATH "Installation directory for executables")
+-- 
+2.43.2
+

diff --git a/games-util/lgogdownloader/lgogdownloader-3.12.ebuild 
b/games-util/lgogdownloader/lgogdownloader-3.12-r1.ebuild
similarity index 60%
rename from games-util/lgogdownloader/lgogdownloader-3.12.ebuild
rename to games-util/lgogdownloader/lgogdownloader-3.12-r1.ebuild
index 17e3c906771f..e07404cb11a4 100644
--- a/games-util/lgogdownloader/lgogdownloader-3.12.ebuild
+++ b/games-util/lgogdownloader/lgogdownloader-3.12-r1.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2023 Gentoo Authors
+# Copyright 1999-2024 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=8
@@ -11,25 +11,42 @@ 
SRC_URI="https://github.com/Sude-/${PN}/releases/download/v${PV}/${P}.tar.gz";
 LICENSE="WTFPL-2"
 SLOT="0"
 KEYWORDS="~amd64 ~x86"
-IUSE="gui"
+IUSE="gui qt5 qt6"
+REQUIRED_USE="gui? ( ^^ ( qt5 qt6 ) )"
 
-RDEPEND=">=app-crypt/rhash-1.3.3-r2:0=
+RDEPEND="
+       >=app-crypt/rhash-1.3.3-r2:0=
        dev-cpp/htmlcxx:0=
        dev-libs/boost:=[zlib]
        >=dev-libs/jsoncpp-1.7:0=
        dev-libs/tinyxml2:0=
        >=net-misc/curl-7.55:0=[ssl]
-       gui? ( dev-qt/qtwebengine:5=[widgets] )"
+       gui? (
+               qt5? ( dev-qt/qtwebengine:5[widgets] )
+               qt6? ( dev-qt/qtwebengine:6[widgets] )
+       )
+"
+
+DEPEND="
+       ${RDEPEND}
+"
 
-DEPEND="${RDEPEND}"
+BDEPEND="
+       sys-apps/help2man
+       virtual/pkgconfig
+"
 
-BDEPEND="sys-apps/help2man
-       virtual/pkgconfig"
+PATCHES=(
+       "${FILESDIR}"/${PN}-qt6.patch
+)
 
 src_configure() {
        local mycmakeargs=(
                -DUSE_QT_GUI=$(usex gui)
        )
+       use gui && mycmakeargs+=(
+               -DCMAKE_DISABLE_FIND_PACKAGE_Qt6=$(usex qt5)
+       )
        cmake_src_configure
 }
 

diff --git a/games-util/lgogdownloader/lgogdownloader-9999.ebuild 
b/games-util/lgogdownloader/lgogdownloader-9999.ebuild
index de26bf23392b..daf26178322c 100644
--- a/games-util/lgogdownloader/lgogdownloader-9999.ebuild
+++ b/games-util/lgogdownloader/lgogdownloader-9999.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2023 Gentoo Authors
+# Copyright 1999-2024 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=8
@@ -10,25 +10,38 @@ HOMEPAGE="https://sites.google.com/site/gogdownloader/";
 EGIT_REPO_URI="https://github.com/Sude-/lgogdownloader.git";
 LICENSE="WTFPL-2"
 SLOT="0"
-IUSE="gui"
+IUSE="gui qt5 qt6"
+REQUIRED_USE="gui? ( ^^ ( qt5 qt6 ) )"
 
-RDEPEND=">=app-crypt/rhash-1.3.3-r2:0=
+RDEPEND="
+       >=app-crypt/rhash-1.3.3-r2:0=
        dev-cpp/htmlcxx:0=
        dev-libs/boost:=[zlib]
        >=dev-libs/jsoncpp-1.7:0=
        dev-libs/tinyxml2:0=
        >=net-misc/curl-7.55:0=[ssl]
-       gui? ( dev-qt/qtwebengine:5=[widgets] )"
+       gui? (
+               qt5? ( dev-qt/qtwebengine:5[widgets] )
+               qt6? ( dev-qt/qtwebengine:6[widgets] )
+       )
+"
 
-DEPEND="${RDEPEND}"
+DEPEND="
+       ${RDEPEND}
+"
 
-BDEPEND="sys-apps/help2man
-       virtual/pkgconfig"
+BDEPEND="
+       sys-apps/help2man
+       virtual/pkgconfig
+"
 
 src_configure() {
        local mycmakeargs=(
                -DUSE_QT_GUI=$(usex gui)
        )
+       use gui && mycmakeargs+=(
+               -DCMAKE_DISABLE_FIND_PACKAGE_Qt6=$(usex qt5)
+       )
        cmake_src_configure
 }
 

Reply via email to