xdg.eclass: initial commit
authorGilles Dartiguelongue <eva@gentoo.org>
Sat, 21 Nov 2015 10:31:29 +0000 (11:31 +0100)
committerGilles Dartiguelongue <eva@gentoo.org>
Tue, 24 Nov 2015 21:56:16 +0000 (22:56 +0100)
Goal of this eclass is to end the inconsistent and often forgotten use
of fdo-mime.eclass. Provides all needed phases for proper behavior.

https://bugs.gentoo.org/show_bug.cgi?id=208047

eclass/xdg.eclass [new file with mode: 0644]

diff --git a/eclass/xdg.eclass b/eclass/xdg.eclass
new file mode 100644 (file)
index 0000000..799d6a2
--- /dev/null
@@ -0,0 +1,61 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+# @ECLASS: xdg.eclass
+# @MAINTAINER:
+# freedesktop-bugs@gentoo.org
+# @AUTHOR:
+# Original author: Gilles Dartiguelongue <eva@gentoo.org>
+# @BLURB: Provides phases for XDG compliant packages.
+# @DESCRIPTION:
+# Utility eclass to update the desktop and shared mime info as laid
+# out in the freedesktop specs & implementations
+
+inherit xdg-utils
+
+case "${EAPI:-0}" in
+       4|5|6)
+               EXPORT_FUNCTIONS src_prepare pkg_preinst pkg_postinst pkg_postrm
+               ;;
+       *) die "EAPI=${EAPI} is not supported" ;;
+esac
+
+DEPEND="
+       dev-util/desktop-file-utils
+       x11-misc/shared-mime-info
+"
+
+# @FUNCTION: xdg_src_prepare
+# @DESCRIPTION:
+# Prepare sources to work with XDG standards.
+xdg_src_prepare() {
+       xdg_environment_reset
+
+       has ${EAPI:-0} 6 && eapply_user
+}
+
+# @FUNCTION: xdg_pkg_preinst
+# @DESCRIPTION:
+# Finds .desktop and mime info files for later handling in pkg_postinst
+xdg_pkg_preinst() {
+       xdg_desktopfiles_savelist
+       xdg_mimeinfo_savelist
+}
+
+# @FUNCTION: xdg_pkg_postinst
+# @DESCRIPTION:
+# Handle desktop and mime info database updates.
+xdg_pkg_postinst() {
+       xdg_desktop_database_update
+       xdg_mimeinfo_database_update
+}
+
+# @FUNCTION: xdg_pkg_postrm
+# @DESCRIPTION:
+# Handle desktop and mime info database updates.
+xdg_pkg_postrm() {
+       xdg_desktop_database_update
+       xdg_mimeinfo_database_update
+}
+