summaryrefslogtreecommitdiff
blob: a9c90106203b957e339510974f1ddac576ed4841 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
# Copyright 1999-2014 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $

EAPI="5"
GCONF_DEBUG="yes"
GNOME_ORG_MODULE="GConf"
GNOME2_LA_PUNT="yes"
PYTHON_COMPAT=( python2_{6,7} )
PYTHON_REQ_USE="xml"

inherit eutils gnome2
if [[ ${PV} = 9999 ]]; then
	GNOME_LIVE_MODULE="gconf"
	inherit gnome2-live
fi

DESCRIPTION="GNOME configuration system and daemon"
HOMEPAGE="http://projects.gnome.org/gconf/"

LICENSE="LGPL-2+"
SLOT="2"
IUSE="debug gtk +introspection ldap orbit policykit"
REQUIRED_USE="${PYTHON_REQUIRED_USE}"
if [[ ${PV} = 9999 ]]; then
	KEYWORDS=""
	IUSE="${IUSE} doc"
else
	KEYWORDS="~alpha ~amd64 ~arm ~ia64 ~mips ~ppc ~ppc64 ~sh ~sparc ~x86 ~amd64-fbsd ~x86-fbsd ~arm-linux ~x86-linux"
fi

RDEPEND="
	${PYTHON_DEPS}
	>=dev-libs/glib-2.31:2
	>=dev-libs/dbus-glib-0.74:=
	>=sys-apps/dbus-1:=
	>=dev-libs/libxml2-2:2
	gtk? ( >=x11-libs/gtk+-2.90:3 )
	introspection? ( >=dev-libs/gobject-introspection-0.9.5:= )
	ldap? ( net-nds/openldap:= )
	orbit? ( >=gnome-base/orbit-2.4:2 )
	policykit? ( sys-auth/polkit:= )
"
DEPEND="${RDEPEND}
	dev-libs/libxslt
	dev-util/gtk-doc-am
	>=dev-util/intltool-0.35
	virtual/pkgconfig
"

if [[ ${PV} = 9999 ]]; then
	DEPEND="${DEPEND}
		doc? ( >=dev-util/gtk-doc-1 )
	"
fi

pkg_setup() {
	kill_gconf
}

src_prepare() {
	# Do not start gconfd when installing schemas, fix bug #238276, upstream #631983
	epatch "${FILESDIR}/${PN}-2.24.0-no-gconfd.patch"

	# Do not crash in gconf_entry_set_value() when entry pointer is NULL, upstream #631985
	epatch "${FILESDIR}/${PN}-2.28.0-entry-set-value-sigsegv.patch"

	gnome2_src_prepare
}

src_configure() {
	# Need host's IDL compiler for cross or native build, bug #262747
	gnome2_src_configure \
		--disable-static \
		--enable-gsettings-backend \
		$(use_enable gtk) \
		$(usex gtk --with-gtk=3.0 "") \
		$(use_enable introspection) \
		$(use_with ldap openldap) \
		$(use_enable orbit) \
		$(use_enable policykit defaults-service) \
		ORBIT_IDL=$(type -P orbit-idl-2)
}

src_install() {
	gnome2_src_install
	python_replicate_script "${ED}"/usr/bin/gsettings-schema-convert || die

	keepdir /etc/gconf/gconf.xml.mandatory
	keepdir /etc/gconf/gconf.xml.defaults
	# Make sure this directory exists, bug #268070, upstream #572027
	keepdir /etc/gconf/gconf.xml.system

	echo "CONFIG_PROTECT_MASK=\"/etc/gconf\"" > 50gconf
	echo 'GSETTINGS_BACKEND="gconf"' >> 50gconf
	doenvd 50gconf
	dodir /root/.gconfd
}

pkg_preinst() {
	kill_gconf
}

pkg_postinst() {
	kill_gconf

	# change the permissions to avoid some gconf bugs
	einfo "changing permissions for gconf dirs"
	find  "${EPREFIX}"/etc/gconf/ -type d -exec chmod ugo+rx "{}" \;

	einfo "changing permissions for gconf files"
	find  "${EPREFIX}"/etc/gconf/ -type f -exec chmod ugo+r "{}" \;

	if ! use orbit; then
		ewarn "You are using dbus for GConf's IPC. If you are upgrading from"
		ewarn "<=gconf-3.2.3, or were previously using gconf with USE=orbit,"
		ewarn "you will need to now restart your desktop session (for example,"
		ewarn "by logging out and then back in)."
		ewarn "Otherwise, gconf-based applications may crash with 'Method ..."
		ewarn "on interface \"org.gnome.GConf.Server\" doesn't exist' errors."
	fi
}

kill_gconf() {
	# This function will kill all running gconfd-2 that could be causing troubles
	if [ -x "${EPREFIX}"/usr/bin/gconftool-2 ]
	then
		"${EPREFIX}"/usr/bin/gconftool-2 --shutdown
	fi

	return 0
}