kde5.eclass: Cleanup obsolete blocker
[gentoo.git] / eclass / xdg.eclass
1 # Copyright 1999-2015 Gentoo Foundation
2 # Distributed under the terms of the GNU General Public License v2
3
4 # @ECLASS: xdg.eclass
5 # @MAINTAINER:
6 # freedesktop-bugs@gentoo.org
7 # @AUTHOR:
8 # Original author: Gilles Dartiguelongue <eva@gentoo.org>
9 # @BLURB: Provides phases for XDG compliant packages.
10 # @DESCRIPTION:
11 # Utility eclass to update the desktop and shared mime info as laid
12 # out in the freedesktop specs & implementations
13
14 inherit xdg-utils
15
16 case "${EAPI:-0}" in
17         4|5|6)
18                 EXPORT_FUNCTIONS src_prepare pkg_preinst pkg_postinst pkg_postrm
19                 ;;
20         *) die "EAPI=${EAPI} is not supported" ;;
21 esac
22
23 # Avoid dependency loop as both depend on glib-2
24 if [[ ${CATEGORY}/${P} != dev-libs/glib-2.* ]] ; then
25 DEPEND="
26         dev-util/desktop-file-utils
27         x11-misc/shared-mime-info
28 "
29 fi
30
31 # @FUNCTION: xdg_src_prepare
32 # @DESCRIPTION:
33 # Prepare sources to work with XDG standards.
34 xdg_src_prepare() {
35         xdg_environment_reset
36
37         has ${EAPI:-0} 6 && default
38 }
39
40 # @FUNCTION: xdg_pkg_preinst
41 # @DESCRIPTION:
42 # Finds .desktop and mime info files for later handling in pkg_postinst.
43 # Locations are stored in XDG_ECLASS_DESKTOPFILES and XDG_ECLASS_MIMEINFOFILES
44 # respectively.
45 xdg_pkg_preinst() {
46         local f
47
48         XDG_ECLASS_DESKTOPFILES=()
49         while IFS= read -r -d '' f; do
50                 XDG_ECLASS_DESKTOPFILES+=( ${f} )
51         done < <(cd "${D}" && find 'usr/share/applications' -type f -print0 2>/dev/null)
52
53         XDG_ECLASS_MIMEINFOFILES=()
54         while IFS= read -r -d '' f; do
55                 XDG_ECLASS_MIMEINFOFILES+=( ${f} )
56         done < <(cd "${D}" && find 'usr/share/mime' -type f -print0 2>/dev/null)
57
58         export XDG_ECLASS_DESKTOPFILES XDG_ECLASS_MIMEINFOFILES
59 }
60
61 # @FUNCTION: xdg_pkg_postinst
62 # @DESCRIPTION:
63 # Handle desktop and mime info database updates.
64 xdg_pkg_postinst() {
65         if [[ ${#XDG_ECLASS_DESKTOPFILES[@]} -gt 0 ]]; then
66                 xdg_desktop_database_update
67         else
68                 debug-print "No .desktop files to add to database"
69         fi
70
71         if [[ ${#XDG_ECLASS_MIMEINFOFILES[@]} -gt 0 ]]; then
72                 xdg_mimeinfo_database_update
73         else
74                 debug-print "No mime info files to add to database"
75         fi
76 }
77
78 # @FUNCTION: xdg_pkg_postrm
79 # @DESCRIPTION:
80 # Handle desktop and mime info database updates.
81 xdg_pkg_postrm() {
82         if [[ ${#XDG_ECLASS_DESKTOPFILES[@]} -gt 0 ]]; then
83                 xdg_desktop_database_update
84         else
85                 debug-print "No .desktop files to add to database"
86         fi
87
88         if [[ ${#XDG_ECLASS_MIMEINFOFILES[@]} -gt 0 ]]; then
89                 xdg_mimeinfo_database_update
90         else
91                 debug-print "No mime info files to add to database"
92         fi
93 }
94