commit:     16e6b9bcbc9d448e20da6a03ea120f4ef7d3eaa2
Author:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Tue Feb  5 18:33:50 2019 +0000
Commit:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Tue Feb  5 19:47:09 2019 +0000
URL:        https://gitweb.gentoo.org/proj/kde.git/commit/?id=16e6b9bc

kde5.eclass: Fork needed xdg.eclass functions pending EAPI-7 porting

Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org>

 eclass/kde5.eclass | 128 ++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 file changed, 123 insertions(+), 5 deletions(-)

diff --git a/eclass/kde5.eclass b/eclass/kde5.eclass
index a1083c267b..ed83170a6a 100644
--- a/eclass/kde5.eclass
+++ b/eclass/kde5.eclass
@@ -31,10 +31,11 @@ _KDE5_ECLASS=1
 # for tests you should proceed with setting VIRTUALX_REQUIRED=test.
 : ${VIRTUALX_REQUIRED:=manual}
 
-inherit cmake-utils flag-o-matic kde5-functions virtualx xdg
+inherit cmake-utils flag-o-matic kde5-functions virtualx
 
 case ${EAPI} in
-       6) inherit eapi7-ver eutils gnome2-utils ;;
+       6) inherit eapi7-ver eutils gnome2-utils xdg ;;
+       7) inherit xdg-utils ;;
 esac
 
 if [[ ${KDE_BUILD_TYPE} = live ]]; then
@@ -717,6 +718,120 @@ kde5_src_install() {
        fi
 }
 
+# @FUNCTION: _xdg_icon_cache_update
+# @DESCRIPTION: Forked from future xdg-utils.eclass. REMOVEME!
+# Updates Gtk+ icon cache files under /usr/share/icons.
+# This function should be called from pkg_postinst and pkg_postrm.
+_xdg_icon_cache_update() {
+       if [[ ${EBUILD_PHASE} != post* ]] ; then
+               die "xdg_icon_cache_update must be used in pkg_post* phases."
+       fi
+
+       if ! type gtk-update-icon-cache &>/dev/null; then
+               debug-print "gtk-update-icon-cache is not found"
+               return
+       fi
+
+       ebegin "Updating icons cache"
+       local retval=0
+       local fails=( )
+       for dir in "${EROOT%/}"/usr/share/icons/*
+       do
+               if [[ -f "${dir}/index.theme" ]] ; then
+                       local rv=0
+                       gtk-update-icon-cache -qf "${dir}"
+                       rv=$?
+                       if [[ ! $rv -eq 0 ]] ; then
+                               debug-print "Updating cache failed on ${dir}"
+                               # Add to the list of failures
+                               fails+=( "${dir}" )
+                               retval=2
+                       fi
+               elif [[ $(ls "${dir}") = "icon-theme.cache" ]]; then
+                       # Clear stale cache files after theme uninstallation
+                       rm "${dir}/icon-theme.cache"
+               fi
+               if [[ -z $(ls "${dir}") ]]; then
+                       # Clear empty theme directories after theme 
uninstallation
+                       rmdir "${dir}"
+               fi
+       done
+       eend ${retval}
+       for f in "${fails[@]}" ; do
+               eerror "Failed to update cache with icon $f"
+       done
+}
+
+# @FUNCTION: _xdg_pkg_preinst
+# @DESCRIPTION: Forked from future xdg.eclass. REMOVEME!
+# Finds .desktop, icon and mime info files for later handling in pkg_postinst.
+# Locations are stored in XDG_ECLASS_DESKTOPFILES, XDG_ECLASS_ICONFILES
+# and XDG_ECLASS_MIMEINFOFILES respectively.
+_xdg_pkg_preinst() {
+       local f
+
+       XDG_ECLASS_DESKTOPFILES=()
+       while IFS= read -r -d '' f; do
+               XDG_ECLASS_DESKTOPFILES+=( ${f} )
+       done < <(cd "${ED}" && find 'usr/share/applications' -type f -print0 
2>/dev/null)
+
+       XDG_ECLASS_ICONFILES=()
+       while IFS= read -r -d '' f; do
+               XDG_ECLASS_ICONFILES+=( ${f} )
+       done < <(cd "${ED}" && find 'usr/share/icons' -type f -print0 
2>/dev/null)
+
+       XDG_ECLASS_MIMEINFOFILES=()
+       while IFS= read -r -d '' f; do
+               XDG_ECLASS_MIMEINFOFILES+=( ${f} )
+       done < <(cd "${ED}" && find 'usr/share/mime' -type f -print0 
2>/dev/null)
+}
+
+# @FUNCTION: _xdg_pkg_postinst
+# @DESCRIPTION: Forked from future xdg.eclass. REMOVEME!
+# Handle desktop, icon and mime info database updates.
+_xdg_pkg_postinst() {
+       if [[ ${#XDG_ECLASS_DESKTOPFILES[@]} -gt 0 ]]; then
+               xdg_desktop_database_update
+       else
+               debug-print "No .desktop files to add to database"
+       fi
+
+       if [[ ${#XDG_ECLASS_ICONFILES[@]} -gt 0 ]]; then
+               _xdg_icon_cache_update
+       else
+               debug-print "No icon files to add to cache"
+       fi
+
+       if [[ ${#XDG_ECLASS_MIMEINFOFILES[@]} -gt 0 ]]; then
+               xdg_mimeinfo_database_update
+       else
+               debug-print "No mime info files to add to database"
+       fi
+}
+
+# @FUNCTION: _xdg_pkg_postrm
+# @DESCRIPTION: Forked from future xdg.eclass. REMOVEME!
+# Handle desktop, icon and mime info database updates.
+_xdg_pkg_postrm() {
+       if [[ ${#XDG_ECLASS_DESKTOPFILES[@]} -gt 0 ]]; then
+               xdg_desktop_database_update
+       else
+               debug-print "No .desktop files to add to database"
+       fi
+
+       if [[ ${#XDG_ECLASS_ICONFILES[@]} -gt 0 ]]; then
+               _xdg_icon_cache_update
+       else
+               debug-print "No icon files to add to cache"
+       fi
+
+       if [[ ${#XDG_ECLASS_MIMEINFOFILES[@]} -gt 0 ]]; then
+               xdg_mimeinfo_database_update
+       else
+               debug-print "No mime info files to add to database"
+       fi
+}
+
 # @FUNCTION: kde5_pkg_preinst
 # @DESCRIPTION:
 # Sets up environment variables required in kde5_pkg_postinst.
@@ -724,7 +839,8 @@ kde5_pkg_preinst() {
        debug-print-function ${FUNCNAME} "$@"
 
        [[ ${EAPI} == 6 ]] && gnome2_icon_savelist
-       xdg_pkg_preinst
+       [[ ${EAPI} == 6 ]] && xdg_pkg_preinst
+       [[ ${EAPI} == 7 ]] && _xdg_pkg_preinst
 }
 
 # @FUNCTION: kde5_pkg_postinst
@@ -736,7 +852,8 @@ kde5_pkg_postinst() {
        if [[ ${EAPI} == 6 && -n ${GNOME2_ECLASS_ICONS} ]]; then
                gnome2_icon_cache_update
        fi
-       xdg_pkg_postinst
+       [[ ${EAPI} == 6 ]] && xdg_pkg_postinst
+       [[ ${EAPI} == 7 ]] && _xdg_pkg_postinst
 
        if [[ -z ${I_KNOW_WHAT_I_AM_DOING} ]]; then
                if [[ ${KDE_BUILD_TYPE} = live ]]; then
@@ -757,7 +874,8 @@ kde5_pkg_postrm() {
        if [[ ${EAPI} == 6 && -n ${GNOME2_ECLASS_ICONS} ]]; then
                gnome2_icon_cache_update
        fi
-       xdg_pkg_postrm
+       [[ ${EAPI} == 6 ]] && xdg_pkg_postrm
+       [[ ${EAPI} == 7 ]] && _xdg_pkg_postrm
 }
 
 fi

Reply via email to