commit: 559f25bc6fa0fe7f525f157f658fc5597d494245
Author: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Sun Feb 22 18:26:05 2026 +0000
Commit: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Sat Feb 28 20:58:00 2026 +0000
URL: https://gitweb.gentoo.org/proj/kde.git/commit/?id=559f25bc
ecm-common.eclass: Cleanup KF5 support
Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org>
eclass/ecm-common.eclass | 160 +++++++++++------------------------------------
1 file changed, 38 insertions(+), 122 deletions(-)
diff --git a/eclass/ecm-common.eclass b/eclass/ecm-common.eclass
index 3278a3d175..7ab333de84 100644
--- a/eclass/ecm-common.eclass
+++ b/eclass/ecm-common.eclass
@@ -28,47 +28,16 @@ inherit cmake
# @ECLASS_VARIABLE: KFMIN
# @DEFAULT_UNSET
# @DESCRIPTION:
-# Minimum version of Frameworks to require. Default value is 6.0.0.
-# If set to <5.240, it is assumed dependencies are fulfilled by KF5/Qt5
-# alternatively, thus a block of SLOT=5 shadow dependencies added.
-: "${KFMIN:=6.0.0}"
+# Minimum version of Frameworks to require. Baseline value is 6.22.0.
+: "${KFMIN:=6.22.0}"
-# @ECLASS_VARIABLE: _KFSLOT
-# @INTERNAL
-# @DESCRIPTION:
-# KDE Frameworks main slot dependency for consistently finding all KF5 or KF6
-# in CMakeLists.txt. Consistency over installed KF packages is established via
-# BDEPEND, then detected in pkg_setup().
-# Is passed as -DQT_MAJOR_VERSION=${_KFSLOT} in src_configure() too.
-_KFSLOT=6
-
-# @ECLASS_VARIABLE: KF5_BDEPEND
-# @PRE_INHERIT
-# @DESCRIPTION:
-# Dynamic KF5 dependency list.
-if [[ ${KF5_BDEPEND} ]]; then
- [[ ${KF5_BDEPEND@a} == *a* ]] ||
- die "KF5_BDEPEND must be an array"
-else
- KF5_BDEPEND=( )
-fi
-
-# @ECLASS_VARIABLE: KF6_BDEPEND
-# @PRE_INHERIT
-# @DESCRIPTION:
-# Dynamic KF6 dependency list.
-if [[ ${KF6_BDEPEND} ]]; then
- [[ ${KF6_BDEPEND@a} == *a* ]] ||
- die "KF6_BDEPEND must be an array"
-else
- KF6_BDEPEND=( )
-fi
+ver_test ${KFMIN} -lt 5.240 && die "KF5 is unsupported!"
# @ECLASS_VARIABLE: ECM_I18N
# @PRE_INHERIT
# @DESCRIPTION:
# Will accept "true" (default) or "false". If set to "false", do nothing.
-# Otherwise, add kde-frameworks/ki18n:* to BDEPEND, find KF[56]I18n and let
+# Otherwise, add kde-frameworks/ki18n:6 to BDEPEND, find KF6I18n and let
# ki18n_install(po) generate and install translations.
: "${ECM_I18N:=true}"
@@ -76,8 +45,8 @@ fi
# @PRE_INHERIT
# @DESCRIPTION:
# Will accept "true" or "false" (default). If set to "false", do nothing.
-# Otherwise, add "+handbook" to IUSE, add kde-frameworks/kdoctools:* to BDEPEND
-# find KF[56]DocTools in CMake, call add_subdirectory(ECM_HANDBOOK_DIRS)
+# Otherwise, add "+handbook" to IUSE, add kde-frameworks/kdoctools:6 to BDEPEND
+# find KF6DocTools in CMake, call add_subdirectory(ECM_HANDBOOK_DIRS)
# and let let kdoctools_install(po) generate and install translated docbook
# files.
: "${ECM_HANDBOOK:=false}"
@@ -119,9 +88,11 @@ fi
# @DEFAULT_UNSET
# @PRE_INHERIT
# @DESCRIPTION:
+# If empty, do nothing. Otherwise, add kde-frameworks/kcmutils:6 to BDEPEND
+# and set up the CMaḱeLists.txt according to the content of ECM_KCM_TARGETS:
# Array of <target>:<subdir> tuples to feed to ECMInstallIcons via
-# ecmcommon_generate_desktop_file(<target> <subdir>), which is this
-# eclass adaptation of kcmutils_generate_desktop_file.
+# ecmcommon_generate_desktop_file(<target> <subdir>), which is this eclass'
+# adaptation of kcmutils_generate_desktop_file.
if [[ ${ECM_KCM_TARGETS} ]]; then
[[ ${ECM_KCM_TARGETS@a} == *a* ]] ||
die "ECM_KCM_TARGETS must be an array"
@@ -129,12 +100,14 @@ fi
DESCRIPTION="Common files for ${PN/-common/}"
-BDEPEND=">=kde-frameworks/extra-cmake-modules-${KFMIN}:*"
+BDEPEND="
+ dev-qt/qtbase:6
+ >=kde-frameworks/extra-cmake-modules-${KFMIN}:*
+"
case ${ECM_I18N} in
true)
- KF5_BDEPEND+=( "kde-frameworks/ki18n:5" )
- KF6_BDEPEND+=( "kde-frameworks/ki18n:6" )
+ BDEPEND+=" kde-frameworks/ki18n:6"
;;
false) ;;
*)
@@ -146,8 +119,7 @@ esac
case ${ECM_HANDBOOK} in
true)
IUSE+=" +handbook"
- KF5_BDEPEND+=( "handbook? ( kde-frameworks/kdoctools:5 )" )
- KF6_BDEPEND+=( "handbook? ( kde-frameworks/kdoctools:6 )" )
+ BDEPEND+=" handbook? ( kde-frameworks/kdoctools:6 )"
;;
false) ;;
*)
@@ -157,22 +129,7 @@ case ${ECM_HANDBOOK} in
esac
if [[ ${ECM_KCM_TARGETS} ]]; then
- KF5_BDEPEND+=( "kde-frameworks/kcmutils:5" )
- KF6_BDEPEND+=( "kde-frameworks/kcmutils:6" )
-fi
-
-KF6_BDEPEND+=( "dev-qt/qtbase:6" )
-
-if $(ver_test ${KFMIN} -lt 5.240) && [[ ${KF6_BDEPEND} && ${KF5_BDEPEND} ]];
then
- BDEPEND+=" || (
- ( ${KF6_BDEPEND[*]} )
- (
- ${KF5_BDEPEND[*]}
- dev-qt/qtcore:5
- )
- )"
-else
- BDEPEND+=" ${KF6_BDEPEND[*]}"
+ BDEPEND+=" kde-frameworks/kcmutils:6"
fi
# @FUNCTION: _ecm-common_preamble
@@ -187,8 +144,8 @@ _ecm-common_preamble() {
find_package(ECM "${KFMIN}" REQUIRED NO_MODULE)
set(CMAKE_MODULE_PATH \${ECM_MODULE_PATH})
- # Set by pkg_setup(); Use this if need to differ between KF5 or
KF6
- set(KFSLOT ${_KFSLOT})
+ # TODO EAPI-9: No longer used after KF5 cleanup.
+ set(KFSLOT 6)
set(KDE_INSTALL_DOCBUNDLEDIR "${EPREFIX}/usr/share/help" CACHE
PATH "")
include(KDEInstallDirs)
@@ -206,11 +163,11 @@ _ecm-common_preamble() {
# @FUNCTION: _ecm-common_i18n
# @INTERNAL
# @DESCRIPTION:
-# Find KF[56]I18n and call ki18n_install(po).
+# Find KF6I18n and call ki18n_install(po).
_ecm-common_i18n() {
[[ ${ECM_I18N} == true ]] || return
cat >> CMakeLists.txt <<- _EOF_ || die
- find_package(KF\${KFSLOT}I18n REQUIRED)
+ find_package(KF6I18n REQUIRED)
ki18n_install(po)
_EOF_
}
@@ -218,13 +175,13 @@ _ecm-common_i18n() {
# @FUNCTION: _ecm-common_docs
# @INTERNAL
# @DESCRIPTION:
-# Find KF[56]DocTools, call kdoctools_install(po) and
+# Find KF6DocTools, call kdoctools_install(po) and
# add_subdirectory(${ECM_HANDBOOK_DIRS})
_ecm-common_docs() {
{ in_iuse handbook && use handbook; } || return
cat >> CMakeLists.txt <<- _EOF_ || die
- find_package(KF\${KFSLOT}DocTools REQUIRED)
+ find_package(KF6DocTools REQUIRED)
kdoctools_install(po)
_EOF_
@@ -241,19 +198,19 @@ _ecm-common_docs() {
# @FUNCTION: _ecm-common_generate_desktop_file
# @INTERNAL
# @DESCRIPTION:
-# Find KF[56]KCMUtils and iterate through ECM_KCM_TARGETS to generate
+# Find KF6KCMUtils and iterate through ECM_KCM_TARGETS to generate
# desktop files out of json.
_ecm-common_generate_desktop_file() {
[[ ${ECM_KCM_TARGETS} ]] || return
cat >> CMakeLists.txt <<- _EOF_ || die
- find_package(KF\${KFSLOT}KCMUtils REQUIRED)
+ find_package(KF6KCMUtils REQUIRED)
# extracted from kcmutils_generate_desktop_file(kcm_target)
function(ecmcommon_generate_desktop_file kcm_target subdir)
set(IN_FILE
\${CMAKE_CURRENT_SOURCE_DIR}/\${subdir}\${kcm_target}.json)
set(OUT_FILE
\${CMAKE_CURRENT_BINARY_DIR}/\${kcm_target}.desktop)
add_custom_target(\${kcm_target}-kcm-desktop-gen ALL
- COMMAND KF\${KFSLOT}::kcmdesktopfilegenerator
\${IN_FILE} \${OUT_FILE}
+ COMMAND KF6::kcmdesktopfilegenerator
\${IN_FILE} \${OUT_FILE}
DEPENDS \${IN_FILE})
install(FILES \${OUT_FILE} DESTINATION
\${KDE_INSTALL_APPDIR})
endfunction()
@@ -313,64 +270,19 @@ _ecm-common_summary() {
_EOF_
}
-# @FUNCTION: _ecm-common-check_deps
-# @INTERNAL
-# @DESCRIPTION:
-# Check existence of requested KF6 dependencies.
-_ecm-common-check_deps() {
- local chk=0
- case ${1} in
- i18n)
- if [[ ${ECM_I18N} ]]; then
- chk=$(has_version -b "kde-frameworks/ki18n:6")
- fi
- ;;
- doctools)
- if [[ ${ECM_HANDBOOK} ]] && in_iuse handbook; then
- if use handbook; then
- chk=$(has_version -b
"kde-frameworks/kdoctools:6")
- fi
- fi
- ;;
- kcmutils)
- if [[ ${ECM_KCM_TARGETS} ]]; then
- chk=$(has_version -b
"kde-frameworks/kcmutils:6")
- fi
- ;;
- *)
- eerror "Unknown value for _ecm-common-check_deps()"
- die "Value ${1} is not supported"
- ;;
- esac
- return ${chk}
-}
-
# @FUNCTION: ecm-common-check_deps
# @DESCRIPTION:
-# Override this to add more KF6 has_version checks to pkg_setup(),
-# corresponding with any additional KF6_BDEPEND defined pre-inherit.
-# If false, we'll assume KF5 dependencies are fulfilled via BDEPEND.
+# No-op function since KF5 support was dropped.
ecm-common-check_deps() {
return 0
}
+if [[ ${EAPI} == 8 ]]; then
# @FUNCTION: ecm-common_pkg_setup
# @DESCRIPTION:
-# If KFMIN is not lower than 5.240 (default is 6.0.0), do nothing.
-# Otherwise, dDetermine which of KF5 or KF6-based depgraph is complete,
-# preferring KF6. The result is stored in _KFSLOT, which is then handed
-# to CMakeLists.txt as KFSLOT var for further use.
-ecm-common_pkg_setup() {
- $(ver_test ${KFMIN} -ge 5.240) && return
-
- if _ecm-common-check_deps i18n && _ecm-common-check_deps doctools &&
- _ecm-common-check_deps kcmutils && ecm-common-check_deps
- then
- _KFSLOT=6
- else
- _KFSLOT=5
- fi
-}
+# No-op function since KF5 support was dropped.
+ecm-common_pkg_setup() { :; }
+fi
# @FUNCTION: ecm-common_src_prepare
# @DESCRIPTION:
@@ -393,10 +305,10 @@ ecm-common_src_prepare() {
# @FUNCTION: ecm-common_src_configure
# @DESCRIPTION:
-# Passes -DQT_MAJOR_VERSION=${_KFSLOT} only.
+# Passes -DQT_MAJOR_VERSION=6 only.
ecm-common_src_configure() {
# necessary for at least KF6KCMUtils
- local cmakeargs=( -DQT_MAJOR_VERSION=${_KFSLOT} )
+ local cmakeargs=( -DQT_MAJOR_VERSION=6 )
# allow the ebuild to override what we set here
mycmakeargs=("${cmakeargs[@]}" "${mycmakeargs[@]}")
@@ -406,4 +318,8 @@ ecm-common_src_configure() {
fi
-EXPORT_FUNCTIONS pkg_setup src_prepare src_configure
+if [[ ${EAPI} == 8 ]]; then
+ EXPORT_FUNCTIONS pkg_setup
+fi
+
+EXPORT_FUNCTIONS src_prepare src_configure