commit:     6e6a0518a9cd61e22051da68294257bc2663a077
Author:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Sat Apr  5 17:54:12 2025 +0000
Commit:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Sat Apr 26 13:16:47 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=6e6a0518

x11-misc/qt5ct: Avoid dev-qt/qtpaths BDEPEND, use optfeature

Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org>

 x11-misc/qt5ct/files/qt5ct-1.9-no-qtpaths.patch | 129 ++++++++++++++++++++++++
 x11-misc/qt5ct/qt5ct-1.9.ebuild                 |  18 ++--
 2 files changed, 140 insertions(+), 7 deletions(-)

diff --git a/x11-misc/qt5ct/files/qt5ct-1.9-no-qtpaths.patch 
b/x11-misc/qt5ct/files/qt5ct-1.9-no-qtpaths.patch
new file mode 100644
index 000000000000..76da1168c7ca
--- /dev/null
+++ b/x11-misc/qt5ct/files/qt5ct-1.9-no-qtpaths.patch
@@ -0,0 +1,129 @@
+From 5ffc06d5e735fcf9bdf5b92874292bccc88acd28 Mon Sep 17 00:00:00 2001
+From: Andreas Sturmlechner <[email protected]>
+Date: Mon, 14 Apr 2025 22:50:08 +0200
+Subject: [PATCH] CMake: Make translations optional
+
+ - Use FeatureSummary to list found dependencies in CMake output
+ - Make it possible to build without translations by making LinguistTools 
optional
+ - When Qt5LinguistTools is optional, then qtpaths would remain as a rather 
costly dependency on Qt5Tools just to establish PLUGINDIR
+   Hence allow distributions/users to set PLUGINDIR manually and only fallback 
to qtpaths if not set
+ - Lowercase some cmake commands for consistency
+ - Append `src` to source directory when generating translations, otherwise 
build directories could be parsed too
+
+(partially cherry-picked from qt6ct 66c08b191b15ab71b206c3bbea4dcb19a26ab874)
+
+Thanks-to: Jonas Kvinge <[email protected]>
+Signed-off-by: Andreas Sturmlechner <[email protected]>
+---
+ CMakeLists.txt           | 45 +++++++++++++++++++++-------------------
+ src/qt5ct/CMakeLists.txt |  5 ++++-
+ 2 files changed, 28 insertions(+), 22 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 59256fd..814757e 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -3,13 +3,14 @@ cmake_minimum_required(VERSION 3.11.0)
+ project(qt5ct LANGUAGES CXX)
+ 
+ include(GNUInstallDirs)
++include(FeatureSummary)
+ 
+-CONFIGURE_FILE(
++configure_file(
+   "${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in"
+   "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
+   IMMEDIATE @ONLY)
+ 
+-ADD_CUSTOM_TARGET(uninstall
++add_custom_target(uninstall
+   "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake")
+ 
+ set(CMAKE_CXX_STANDARD 11)
+@@ -25,9 +26,9 @@ set(QT_MINIMUM_VERSION "5.15.0")
+ 
+ option(DISABLE_DBUS "disable D-Bus support (global menu and D-Bus tray icon 
implementation)" OFF)
+ 
+-ADD_DEFINITIONS(-DQT_DISABLE_DEPRECATED_BEFORE=0x050C00 -DUSE_WIDGETS)
++add_definitions(-DQT_DISABLE_DEPRECATED_BEFORE=0x050C00 -DUSE_WIDGETS)
+ 
+-find_package(Qt5 ${QT_MINIMUM_VERSION} COMPONENTS Widgets Concurrent 
LinguistTools REQUIRED)
++find_package(Qt5 ${QT_MINIMUM_VERSION} REQUIRED COMPONENTS Core Widgets 
Concurrent OPTIONAL_COMPONENTS LinguistTools)
+ find_package(Qt5Gui ${QT_MINIMUM_VERSION} CONFIG REQUIRED Private)
+ 
+ if(NOT DISABLE_DBUS)
+@@ -37,29 +38,29 @@ else()
+     message(STATUS "D-Bus support: Disabled")
+ endif()
+ 
+-get_target_property(QT_LRELEASE_EXECUTABLE Qt5::lrelease IMPORTED_LOCATION)
+-
+-if(QT_LRELEASE_EXECUTABLE)
+-    message(STATUS "Found lrelease executable: " ${QT_LRELEASE_EXECUTABLE})
+-else()
+-    message(FATAL_ERROR "Could NOT find lrelease executable")
++if(Qt5LinguistTools_FOUND)
++    message(STATUS "Generating translations ...")
++    get_target_property(QT_LRELEASE_EXECUTABLE Qt5::lrelease 
IMPORTED_LOCATION)
++    execute_process(COMMAND find ${CMAKE_CURRENT_SOURCE_DIR}/src -name *.ts 
COMMAND xargs ${QT_LRELEASE_EXECUTABLE} -silent)
+ endif()
+ 
+-get_filename_component(QT_QTPATHS_EXECUTABLE ${QT_LRELEASE_EXECUTABLE} 
DIRECTORY)
+-set(QT_QTPATHS_EXECUTABLE ${QT_QTPATHS_EXECUTABLE}/qtpaths)
++if(Qt5LinguistTools_FOUND AND NOT PLUGINDIR)
++    get_filename_component(QT_QTPATHS_EXECUTABLE ${QT_LRELEASE_EXECUTABLE} 
DIRECTORY)
++    set(QT_QTPATHS_EXECUTABLE ${QT_QTPATHS_EXECUTABLE}/qtpaths)
+ 
+-if(EXISTS ${QT_QTPATHS_EXECUTABLE})
+-    message(STATUS "Found qtpaths executable: " ${QT_QTPATHS_EXECUTABLE})
+-else()
+-    message(FATAL_ERROR "Could NOT find qtpaths executable")
++    if(EXISTS ${QT_QTPATHS_EXECUTABLE})
++        message(STATUS "Found qtpaths executable: " ${QT_QTPATHS_EXECUTABLE})
++    else()
++        message(FATAL_ERROR "Could NOT find qtpaths executable")
++    endif()
++
++    execute_process(COMMAND ${QT_QTPATHS_EXECUTABLE} --plugin-dir 
OUTPUT_VARIABLE PLUGINDIR OUTPUT_STRIP_TRAILING_WHITESPACE)
++elseif(NOT Qt5LinguistTools_FOUND AND NOT PLUGINDIR)
++    message(FATAL_ERROR "PLUGINDIR not provided and Qt5LinguistTools not 
found - aborting.")
+ endif()
+ 
+-execute_process(COMMAND ${QT_QTPATHS_EXECUTABLE} --plugin-dir OUTPUT_VARIABLE 
PLUGINDIR OUTPUT_STRIP_TRAILING_WHITESPACE)
+ message(STATUS "Plugin path: " ${PLUGINDIR})
+ 
+-message(STATUS "Generating translations ...")
+-execute_process(COMMAND find ${CMAKE_CURRENT_SOURCE_DIR} -name *.ts COMMAND 
xargs ${QT_LRELEASE_EXECUTABLE} -silent)
+-
+ include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src/qt5ct-common)
+ 
+ add_link_options(-Wl,--no-undefined)
+@@ -108,4 +109,6 @@ if(UNIX)
+         ARGS -rf ${CMAKE_CURRENT_BINARY_DIR}/doc/html
+         TARGET distclean
+     )
+-endif(UNIX)
++endif()
++
++feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES)
+diff --git a/src/qt5ct/CMakeLists.txt b/src/qt5ct/CMakeLists.txt
+index 78535e3..3249e21 100644
+--- a/src/qt5ct/CMakeLists.txt
++++ b/src/qt5ct/CMakeLists.txt
+@@ -24,9 +24,12 @@ set(app_SRCS
+   qsseditordialog.ui
+   qsspage.ui
+   troubleshootingpage.ui
+-  translations/translations.qrc
+ )
+ 
++if(Qt5LinguistTools_FOUND)
++  list(APPEND app_SRCS translations/translations.qrc)
++endif()
++
+ add_executable(qt5ct ${app_SRCS})
+ target_link_libraries(qt5ct PRIVATE Qt5::Widgets Qt5::Concurrent 
Qt5::WidgetsPrivate qt5ct-common)
+ install(TARGETS qt5ct DESTINATION ${CMAKE_INSTALL_BINDIR})
+-- 
+2.49.0
+

diff --git a/x11-misc/qt5ct/qt5ct-1.9.ebuild b/x11-misc/qt5ct/qt5ct-1.9.ebuild
index 091f5edf48ae..1aed72b7957b 100644
--- a/x11-misc/qt5ct/qt5ct-1.9.ebuild
+++ b/x11-misc/qt5ct/qt5ct-1.9.ebuild
@@ -3,7 +3,7 @@
 
 EAPI=8
 
-inherit cmake
+inherit cmake optfeature qmake-utils
 
 DESCRIPTION="Qt5 configuration tool, similar to qtconfig for Qt4"
 HOMEPAGE="https://sourceforge.net/projects/qt5ct/";
@@ -23,9 +23,17 @@ RDEPEND="
 DEPEND="${RDEPEND}"
 BDEPEND="
        dev-qt/linguist-tools:5
-       dev-qt/qtpaths:5
 "
 
+PATCHES=( "${FILESDIR}/${P}-no-qtpaths.patch" )
+
+src_configure() {
+       local mycmakeargs=(
+               -DPLUGINDIR=$(qt5_get_plugindir)
+       )
+       cmake_src_configure
+}
+
 src_install() {
        cmake_src_install
 
@@ -37,9 +45,5 @@ pkg_postinst() {
                ewarn "qt5ct configuration won't be applied to the currently 
running sessions."
                ewarn "Please relogin."
        fi
-       if ! has_version 'dev-qt/qtsvg:5'; then
-               elog
-               elog "For SVG icon themes, please install 'dev-qt/qtsvg:5'."
-               elog
-       fi
+       optfeature "SVG icon themes" "dev-qt/qtsvg:5"
 }

Reply via email to