blob: f206fc153be7010a811b3412c852fcd6bed19778 (
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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
|
# Copyright 1999-2006 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/eclass/gnome2.eclass,v 1.87 2010/04/26 19:37:25 abcd Exp $
#
# gnome2.eclass
#
# Exports portage base functions used by ebuilds written for packages using the
# GNOME framework. For additional functions, see gnome2-utils.eclass.
#
# Maintained by Gentoo's GNOME herd <gnome@gentoo.org>
#
inherit fdo-mime libtool gnome.org gnome2-utils
case "${EAPI:-0}" in
0|1)
EXPORT_FUNCTIONS src_unpack src_compile src_install pkg_preinst pkg_postinst pkg_postrm
;;
2|3)
EXPORT_FUNCTIONS src_unpack src_prepare src_configure src_compile src_install pkg_preinst pkg_postinst pkg_postrm
;;
*) die "EAPI=${EAPI} is not supported" ;;
esac
# Extra configure opts passed to econf
G2CONF=${G2CONF:-""}
# Should we delete all the .la files?
# Do NOT use without due consideration
GNOME2_LA_PUNT=${GNOME2_LA_PUNT:-"no"}
# Extra options passed to elibtoolize
ELTCONF=${ELTCONF:-""}
# Should we use EINSTALL instead of DESTDIR
USE_EINSTALL=${USE_EINSTALL:-""}
# Run scrollkeeper for this package?
SCROLLKEEPER_UPDATE=${SCROLLKEEPER_UPDATE:-"1"}
if [[ ${GCONF_DEBUG} != "no" ]]; then
IUSE="debug"
fi
gnome2_src_unpack() {
unpack ${A}
cd "${S}"
has ${EAPI:-0} 0 1 && gnome2_src_prepare
}
gnome2_src_prepare() {
# Don't use the session bus address inherited via the environment
# causes test and introspection-building failures
unset DBUS_SESSION_BUS_ADDRESS
# Prevent scrollkeeper access violations
gnome2_omf_fix
# Run libtoolize
elibtoolize ${ELTCONF}
}
gnome2_src_configure() {
# Update the GNOME configuration options
if [[ ${GCONF_DEBUG} != 'no' ]] ; then
if use debug ; then
G2CONF="${G2CONF} --enable-debug=yes"
fi
fi
# Prevent a QA warning
if hasq doc ${IUSE} ; then
G2CONF="${G2CONF} $(use_enable doc gtk-doc)"
fi
# Avoid sandbox violations caused by misbehaving packages (bug #128289)
addwrite "/root/.gnome2"
# GST_REGISTRY is to work around gst-inspect trying to read/write /root
GST_REGISTRY="${S}/registry.xml" econf "$@" ${G2CONF} || die "configure failed"
}
gnome2_src_compile() {
has ${EAPI:-0} 0 1 && gnome2_src_configure "$@"
# Whenever new API is added to glib/cairo/libxml2 etc, gobject-introspection
# needs to be rebuilt so that the typelibs/girs contain the new API data
if has introspection ${IUSE} && use introspection; then
ewarn "If you get a compilation failure related to introspection, try"
ewarn "rebuilding dev-libs/gobject-introspection so that it's updated"
ewarn "for any new glib, cairo, etc APIs"
fi
emake || die "compile failure"
}
gnome2_src_install() {
has ${EAPI:-0} 0 1 2 && ! use prefix && ED="${D}"
# if this is not present, scrollkeeper-update may segfault and
# create bogus directories in /var/lib/
local sk_tmp_dir="/var/lib/scrollkeeper"
dodir "${sk_tmp_dir}" || die "dodir failed"
# we must delay gconf schema installation due to sandbox
export GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL="1"
if [[ -z "${USE_EINSTALL}" || "${USE_EINSTALL}" = "0" ]]; then
debug-print "Installing with 'make install'"
emake DESTDIR="${D}" "scrollkeeper_localstate_dir=${ED}${sk_tmp_dir} " "$@" install || die "install failed"
else
debug-print "Installing with 'einstall'"
einstall "scrollkeeper_localstate_dir=${ED}${sk_tmp_dir} " "$@" || die "einstall failed"
fi
unset GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL
# Manual document installation
if [[ -n "${DOCS}" ]]; then
dodoc ${DOCS} || die "dodoc failed"
fi
# Do not keep /var/lib/scrollkeeper because:
# 1. The scrollkeeper database is regenerated at pkg_postinst()
# 2. ${ED}/var/lib/scrollkeeper contains only indexes for the current pkg
# thus it makes no sense if pkg_postinst ISN'T run for some reason.
if [[ -z "$(find "${D}" -name '*.omf')" ]]; then
export SCROLLKEEPER_UPDATE="0"
fi
rm -rf "${ED}${sk_tmp_dir}"
# Make sure this one doesn't get in the portage db
rm -fr "${ED}/usr/share/applications/mimeinfo.cache"
# Delete all .la files
if [[ "${GNOME2_LA_PUNT}" != "no" ]]; then
ebegin "Removing .la files"
find "${D}" -name '*.la' -exec rm -f '{}' + || die
eend
fi
}
gnome2_pkg_preinst() {
gnome2_gconf_savelist
gnome2_icon_savelist
gnome2_schemas_savelist
}
gnome2_pkg_postinst() {
gnome2_gconf_install
fdo-mime_desktop_database_update
fdo-mime_mime_database_update
gnome2_icon_cache_update
gnome2_schemas_update
if [[ "${SCROLLKEEPER_UPDATE}" = "1" ]]; then
gnome2_scrollkeeper_update
fi
}
#gnome2_pkg_prerm() {
# gnome2_gconf_uninstall
#}
gnome2_pkg_postrm() {
fdo-mime_desktop_database_update
fdo-mime_mime_database_update
gnome2_icon_cache_update
gnome2_schemas_update --uninstall
if [[ "${SCROLLKEEPER_UPDATE}" = "1" ]]; then
gnome2_scrollkeeper_update
fi
}
# pkg_prerm
|