[PATCH 3/3] ecm-common.eclass: Cleanup KF5 support
Andreas Sturmlechner <[email protected]> Sat, 06 Jun 2026 01:05:42 +0200
| Newsgroups | gmane.linux.gentoo.devel |
|---|---|
| Message-ID | <[email protected]> |
Signed-off-by: Andreas Sturmlechner <[email protected]> --- eclass/ecm-common.eclass | 158 +++++++++------------------------------ 1 file changed, 36 insertions(+), 122 deletions(-) diff --git a/eclass/ecm-common.eclass b/eclass/ecm-common.eclass index 7c81511faa49..d14aa2bd3cdb 100644 --- a/eclass/ecm-common.eclass +++ b/eclass/ecm-common.eclass @@ -1,4 +1,4 @@ -# Copyright 2024-2025 Gentoo Authors +# Copyright 2024-2026 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 # @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" @@ -131,13 +102,13 @@ DESCRIPTION="Common files for ${PN/-common/}" BDEPEND=" >=dev-build/cmake-3.31.9-r1 + 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) ;; *) @@ -149,8 +120,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) ;; *) @@ -160,22 +130,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 @@ -190,8 +145,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) @@ -209,11 +164,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_ } @@ -221,13 +176,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_ @@ -244,19 +199,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() @@ -316,64 +271,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: @@ -396,10 +306,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[@]}") @@ -409,4 +319,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 -- 2.54.0
signature.asc
(application/pgp-signature, 829 B)
-----BEGIN PGP SIGNATURE----- iQIvBAABCgCZFiEE34gXUSooizdYNDu3S5FW4z0PgBkFAmojVkYbFIAAAAAABAAO bWFudTIsMi41KzEuMTIsMiwyXxSAAAAAAC4AKGlzc3Vlci1mcHJAbm90YXRpb25z Lm9wZW5wZ3AuZmlmdGhob3JzZW1hbi5uZXRERjg4MTc1MTJBMjg4QjM3NTgzNDNC Qjc0QjkxNTZFMzNEMEY4MDE5AAoJEEuRVuM9D4AZS7wL/3jQJiuLhlOjwdFQPq1W RW+02JgnavQAusmK4JxOIbcb2pgZVkcnEox6g/Jpk0REehQ86W9NtAvSwYhigZlc z89oO0xRil6ikx+/PwNYo95sQrvNx7UQgaD+BYJ6NjSbJ5OPgukcrLEFBa230BUJ e1+lrxXLo8wrufixvw+8IBP1K0+mlNGCT5HjgJr7aaeYjfU+5prFEPlhTGKF4Jqb EvSVVi5F9W5Mc9l6VFDexAFCNCIajG0fdKFaWtPaXk6+kvxGcolrirmL4TR0QVPR iUK88cJQKHdwLg5UhsBruJsg/BdnH+H//VeuKKV53Z05dNt02GuxgE/p25V15khR DPPdAhMtxO5jC5KLaLNFtsGPNvM3N+2QNohUKfxOHDxTuVikQOYYUk9TroNEF+/C XUFYCHll8cVyzzEF29fpBiZC7x7DYhZ6Svj5ngdkbxYmAwt8Q+5F5aWxSDiCkEOH lyuwWisSLpqNXx+6oTaWztuRXT0/u24OjMubnCBDU8/1dA== =CeRe -----END PGP SIGNATURE-----