From c715f7a87d835a5d7eb9204475e4e8360c6e8908 Mon Sep 17 00:00:00 2001 From: Andreas Sturmlechner Date: Tue, 13 Aug 2024 22:39:06 +0200 Subject: 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 --- eclass/ecm.eclass | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'eclass/ecm.eclass') diff --git a/eclass/ecm.eclass b/eclass/ecm.eclass index 87a25296036..a8b40c2b6e4 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 -- cgit v1.2.3