summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Sturmlechner <asturm@gentoo.org>2019-02-05 19:33:50 +0100
committerAndreas Sturmlechner <asturm@gentoo.org>2019-02-07 13:59:57 +0100
commitf281d20f8a4e9a458f196143f4a1099369b1b47a (patch)
tree485dc902dee3cb6dc9c0aca299e8b4b13c40cc83
parentkde5.eclass: Relocate KDE_INSTALL_DOCBUNDLEDIR to /usr/share/help (diff)
downloadgentoo-f281d20f.tar.gz
gentoo-f281d20f.tar.bz2
gentoo-f281d20f.zip
kde5.eclass: Fork needed xdg.eclass functions pending EAPI-7 porting
Signed-off-by: Andreas Sturmlechner <asturm@gentoo.org>
-rw-r--r--eclass/kde5.eclass128
1 files changed, 123 insertions, 5 deletions
diff --git a/eclass/kde5.eclass b/eclass/kde5.eclass
index e3c4bc9c9231..82655acabcc0 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
@@ -716,6 +717,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.
@@ -723,7 +838,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
@@ -735,7 +851,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
@@ -756,7 +873,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