diff options
author | 2024-08-13 22:39:06 +0200 | |
---|---|---|
committer | 2024-08-14 23:02:21 +0200 | |
commit | c715f7a87d835a5d7eb9204475e4e8360c6e8908 (patch) | |
tree | 1493738e373c05a8255558ca33f3113dbb0c8f96 | |
parent | cmake.eclass: If inherited from ecm.eclass, set ECM_DISABLE_GIT (diff) | |
download | kde-c715f7a87d835a5d7eb9204475e4e8360c6e8908.tar.gz kde-c715f7a87d835a5d7eb9204475e4e8360c6e8908.tar.bz2 kde-c715f7a87d835a5d7eb9204475e4e8360c6e8908.zip |
ecm.eclass: For kde.org projects, try to rename metainfo file real hard
- detect if we are inheriting kde.org.eclass
- detect if package name is not the same as upstream name (KDE_ORG_NAME)
- iterate through "${ED}"/usr/share/metainfo/
- if file contains KDE_ORG_NAME or similar, rename that to ${PN}${SLOT/0*/}
- otherwise, prepend "${PN}${SLOT/0*/}-" after ^org.kde.
Notably, this does not (yet?) trigger if a package ${PN} == ${KDE_ORG_NAME}
but different SLOTs. Should we just do that all the time?
Signed-off-by: Andreas Sturmlechner <asturm@gentoo.org>
-rw-r--r-- | eclass/ecm.eclass | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/eclass/ecm.eclass b/eclass/ecm.eclass index 87a2529603..a8b40c2b6e 100644 --- a/eclass/ecm.eclass +++ b/eclass/ecm.eclass @@ -649,6 +649,9 @@ ecm_src_test() { # Wrapper for cmake_src_install. Drops executable bit from .desktop files # installed inside /usr/share/applications. This is set by cmake when install() # is called in PROGRAM form, as seen in many kde.org projects. +# In case kde.org.eclass is detected, in case KDE_ORG_NAME != PN, tries real +# hard to detect, then rename, metainfo.xml appdata files to something unique +# including SLOT if else than "0" (basically KDE_ORG_NAME -> PN+SLOT). ecm_src_install() { debug-print-function ${FUNCNAME} "$@" @@ -664,6 +667,33 @@ ecm_src_install() { fi done fi + + mv_metainfo() { + if [[ -f ${1} ]]; then + mv -v ${1} ${1/${2}/${3}} || die + fi + } + + if [[ -n ${_KDE_ORG_ECLASS} && -d "${ED}"/usr/share/metainfo/ ]]; then + if [[ ${KDE_ORG_NAME} != ${PN} ]]; then + local ecm_metainfo + pushd "${ED}"/usr/share/metainfo/ > /dev/null || die + for ecm_metainfo in find * -type f -iname "*metainfo.xml"; do + case ${ecm_metainfo} in + *${KDE_ORG_NAME}*) + mv_metainfo ${ecm_metainfo} ${KDE_ORG_NAME} ${PN}${SLOT/0*/} + ;; + *${KDE_ORG_NAME/-/_}*) + mv_metainfo ${ecm_metainfo} ${KDE_ORG_NAME/-/_} ${PN}${SLOT/0*/} + ;; + org.kde.*) + mv_metainfo ${ecm_metainfo} "org.kde." "org.kde.${PN}${SLOT/0*/}-" + ;; + esac + done + popd > /dev/null || die + fi + fi } # @FUNCTION: ecm_pkg_preinst |