commit: 882d006f2a945587d25fc5e5b8cc520febfe7e9f
Author: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Tue Aug 13 20:39:06 2024 +0000
Commit: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Thu Aug 15 17:46:50 2024 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=882d006f
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 <AT> gentoo.org>
eclass/ecm.eclass | 30 ++++++++++++++++++++++++++++++
1 file changed, 30 insertions(+)
diff --git a/eclass/ecm.eclass b/eclass/ecm.eclass
index 3d3b9328269d..c8731b8c0cff 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