/[gentoo-x86]/eclass/gnome2-utils.eclass
Gentoo

Diff of /eclass/gnome2-utils.eclass

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 1.16 Revision 1.30
1# Copyright 1999-2006 Gentoo Foundation 1# Copyright 1999-2012 Gentoo Foundation
2# Distributed under the terms of the GNU General Public License v2 2# Distributed under the terms of the GNU General Public License v2
3# $Header: /var/cvsroot/gentoo-x86/eclass/gnome2-utils.eclass,v 1.16 2010/12/07 06:23:34 eva Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/gnome2-utils.eclass,v 1.30 2012/10/23 20:32:51 eva Exp $
4 4
5#
6# gnome2-utils.eclass 5# @ECLASS: gnome2-utils.eclass
7# 6# @MAINTAINER:
8# Set of auxiliary functions used to perform actions commonly needed by packages 7# gnome@gentoo.org
9# using the GNOME framework. 8# @BLURB: Auxiliary functions commonly used by Gnome packages.
10# 9# @DESCRIPTION:
11# Maintained by Gentoo's GNOME herd <gnome@gentoo.org> 10# This eclass provides a set of auxiliary functions needed by most Gnome
12# 11# packages. It may be used by non-Gnome packages as needed for handling various
12# Gnome stack related functions such as:
13# * Gtk+ icon cache management
14# * GSettings schemas management
15# * GConf schemas management
16# * scrollkeeper (old Gnome help system) management
13 17
18case "${EAPI:-0}" in
19 0|1|2|3|4|5) ;;
20 *) die "EAPI=${EAPI} is not supported" ;;
21esac
14 22
15 23# @ECLASS-VARIABLE: GCONFTOOL_BIN
24# @INTERNAL
25# @DESCRIPTION:
16# Path to gconftool-2 26# Path to gconftool-2
17: ${GCONFTOOL_BIN:="/usr/bin/gconftool-2"} 27: ${GCONFTOOL_BIN:="/usr/bin/gconftool-2"}
18 28
29# @ECLASS-VARIABLE: SCROLLKEEPER_DIR
30# @INTERNAL
31# @DESCRIPTION:
19# Directory where scrollkeeper-update should do its work 32# Directory where scrollkeeper-update should do its work
20: ${SCROLLKEEPER_DIR:="/var/lib/scrollkeeper"} 33: ${SCROLLKEEPER_DIR:="/var/lib/scrollkeeper"}
21 34
35# @ECLASS-VARIABLE: SCROLLKEEPER_UPDATE_BIN
36# @INTERNAL
37# @DESCRIPTION:
22# Path to scrollkeeper-update 38# Path to scrollkeeper-update
23: ${SCROLLKEEPER_UPDATE_BIN:="/usr/bin/scrollkeeper-update"} 39: ${SCROLLKEEPER_UPDATE_BIN:="/usr/bin/scrollkeeper-update"}
24 40
41# @ECLASS-VARIABLE: GTK_UPDATE_ICON_CACHE
42# @INTERNAL
43# @DESCRIPTION:
25# Path to gtk-update-icon-cache 44# Path to gtk-update-icon-cache
26: ${GTK_UPDATE_ICON_CACHE:="/usr/bin/gtk-update-icon-cache"} 45: ${GTK_UPDATE_ICON_CACHE:="/usr/bin/gtk-update-icon-cache"}
27 46
47# @ECLASS-VARIABLE: GLIB_COMPILE_SCHEMAS
48# @INTERNAL
49# @DESCRIPTION:
28# Path to glib-compile-schemas 50# Path to glib-compile-schemas
29: ${GLIB_COMPILE_SCHEMAS:="/usr/bin/glib-compile-schemas"} 51: ${GLIB_COMPILE_SCHEMAS:="/usr/bin/glib-compile-schemas"}
30 52
53# @ECLASS-VARIABLE: GNOME2_ECLASS_SCHEMAS
54# @INTERNAL
55# @DEFAULT_UNSET
56# @DESCRIPTION:
57# List of GConf schemas provided by the package
31 58
59# @ECLASS-VARIABLE: GNOME2_ECLASS_ICONS
60# @INTERNAL
61# @DEFAULT_UNSET
62# @DESCRIPTION:
63# List of icons provided by the package
64
65# @ECLASS-VARIABLE: GNOME2_ECLASS_SCROLLS
66# @INTERNAL
67# @DEFAULT_UNSET
68# @DESCRIPTION:
69# List of scrolls (documentation files) provided by the package
70
71# @ECLASS-VARIABLE: GNOME2_ECLASS_GLIB_SCHEMAS
72# @INTERNAL
73# @DEFAULT_UNSET
74# @DESCRIPTION:
75# List of GSettings schemas provided by the package
32 76
33DEPEND=">=sys-apps/sed-4" 77DEPEND=">=sys-apps/sed-4"
34 78
35 79
80# @FUNCTION: gnome2_environment_reset
81# @DESCRIPTION:
82# Reset various variables inherited from root's evironment to a reasonable
83# default for ebuilds to help avoid access violations and test failures.
84gnome2_environment_reset() {
85 # Respected by >=glib-2.30.1-r1
86 export G_HOME="${T}"
36 87
88 # GST_REGISTRY is to work around gst utilities trying to read/write /root
89 export GST_REGISTRY="${T}/registry.xml"
90
91 # XXX: code for resetting XDG_* directories should probably be moved into
92 # a separate function in a non-gnome eclass
93 export XDG_DATA_HOME="${T}/.local/share"
94 export XDG_CONFIG_HOME="${T}/.config"
95 export XDG_CACHE_HOME="${T}/.cache"
96 export XDG_RUNTIME_DIR="${T}/run"
97 mkdir -p "${XDG_DATA_HOME}" "${XDG_CONFIG_HOME}" "${XDG_CACHE_HOME}" \
98 "${XDG_RUNTIME_DIR}"
99 # This directory needs to be owned by the user, and chmod 0700
100 # http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html
101 chmod 0700 "${XDG_RUNTIME_DIR}"
102}
103
104# @FUNCTION: gnome2_gconf_savelist
105# @DESCRIPTION:
37# Find the GConf schemas that are about to be installed and save their location 106# Find the GConf schemas that are about to be installed and save their location
38# in the GNOME2_ECLASS_SCHEMAS environment variable 107# in the GNOME2_ECLASS_SCHEMAS environment variable.
108# This function should be called from pkg_preinst.
39gnome2_gconf_savelist() { 109gnome2_gconf_savelist() {
110 has ${EAPI:-0} 0 1 2 && ! use prefix && ED="${D}"
40 pushd "${D}" &> /dev/null 111 pushd "${ED}" &> /dev/null
41 export GNOME2_ECLASS_SCHEMAS=$(find 'etc/gconf/schemas/' -name '*.schemas' 2> /dev/null) 112 export GNOME2_ECLASS_SCHEMAS=$(find 'etc/gconf/schemas/' -name '*.schemas' 2> /dev/null)
42 popd &> /dev/null 113 popd &> /dev/null
43} 114}
44 115
45 116# @FUNCTION: gnome2_gconf_install
117# @DESCRIPTION:
46# Applies any schema files installed by the current ebuild to Gconf's database 118# Applies any schema files installed by the current ebuild to Gconf's database
47# using gconftool-2 119# using gconftool-2.
120# This function should be called from pkg_postinst.
48gnome2_gconf_install() { 121gnome2_gconf_install() {
122 has ${EAPI:-0} 0 1 2 && ! use prefix && EROOT="${ROOT}"
49 local updater="${ROOT}${GCONFTOOL_BIN}" 123 local updater="${EROOT}${GCONFTOOL_BIN}"
50 local F
51 124
52 if [[ ! -x "${updater}" ]]; then 125 if [[ ! -x "${updater}" ]]; then
126 debug-print "${updater} is not executable"
53 return 127 return
54 fi 128 fi
55 129
56 if [[ -z "${GNOME2_ECLASS_SCHEMAS}" ]]; then 130 if [[ -z "${GNOME2_ECLASS_SCHEMAS}" ]]; then
57 einfo "No GNOME 2 GConf schemas found" 131 debug-print "No GNOME 2 GConf schemas found"
58 return 132 return
59 fi 133 fi
60 134
61 # We are ready to install the GCONF Scheme now 135 # We are ready to install the GCONF Scheme now
62 unset GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL 136 unset GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL
63 export GCONF_CONFIG_SOURCE="$("${updater}" --get-default-source | sed "s;:/;:${ROOT};")" 137 export GCONF_CONFIG_SOURCE="$("${updater}" --get-default-source | sed "s;:/;:${ROOT};")"
64 138
65 einfo "Installing GNOME 2 GConf schemas" 139 einfo "Installing GNOME 2 GConf schemas"
66 140
141 local F
67 for F in ${GNOME2_ECLASS_SCHEMAS}; do 142 for F in ${GNOME2_ECLASS_SCHEMAS}; do
68 if [[ -e "${ROOT}${F}" ]]; then 143 if [[ -e "${EROOT}${F}" ]]; then
69 # echo "DEBUG::gconf install ${F}" 144 debug-print "Installing schema: ${F}"
70 "${updater}" --makefile-install-rule "${ROOT}${F}" 1>/dev/null 145 "${updater}" --makefile-install-rule "${EROOT}${F}" 1>/dev/null
71 fi 146 fi
72 done 147 done
73 148
74 # have gconf reload the new schemas 149 # have gconf reload the new schemas
75 pids=$(pgrep -x gconfd-2) 150 pids=$(pgrep -x gconfd-2)
78 kill -HUP ${pids} 153 kill -HUP ${pids}
79 eend $? 154 eend $?
80 fi 155 fi
81} 156}
82 157
83 158# @FUNCTION: gnome2_gconf_uninstall
159# @DESCRIPTION:
84# Removes schema files previously installed by the current ebuild from Gconf's 160# Removes schema files previously installed by the current ebuild from Gconf's
85# database. 161# database.
86gnome2_gconf_uninstall() { 162gnome2_gconf_uninstall() {
163 has ${EAPI:-0} 0 1 2 && ! use prefix && EROOT="${ROOT}"
87 local updater="${ROOT}${GCONFTOOL_BIN}" 164 local updater="${EROOT}${GCONFTOOL_BIN}"
88 local F
89 165
90 if [[ ! -x "${updater}" ]]; then 166 if [[ ! -x "${updater}" ]]; then
167 debug-print "${updater} is not executable"
91 return 168 return
92 fi 169 fi
93 170
94 if [[ -z "${GNOME2_ECLASS_SCHEMAS}" ]]; then 171 if [[ -z "${GNOME2_ECLASS_SCHEMAS}" ]]; then
95 einfo "No GNOME 2 GConf schemas found" 172 debug-print "No GNOME 2 GConf schemas found"
96 return 173 return
97 fi 174 fi
98 175
99 unset GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL 176 unset GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL
100 export GCONF_CONFIG_SOURCE="$("${updater}" --get-default-source | sed "s;:/;:${ROOT};")" 177 export GCONF_CONFIG_SOURCE="$("${updater}" --get-default-source | sed "s;:/;:${ROOT};")"
101 178
102 einfo "Uninstalling GNOME 2 GConf schemas" 179 einfo "Uninstalling GNOME 2 GConf schemas"
103 180
181 local F
104 for F in ${GNOME2_ECLASS_SCHEMAS}; do 182 for F in ${GNOME2_ECLASS_SCHEMAS}; do
105 if [[ -e "${ROOT}${F}" ]]; then 183 if [[ -e "${EROOT}${F}" ]]; then
106 # echo "DEBUG::gconf uninstall ${F}" 184 debug-print "Uninstalling gconf schema: ${F}"
107 "${updater}" --makefile-uninstall-rule "${ROOT}${F}" 1>/dev/null 185 "${updater}" --makefile-uninstall-rule "${EROOT}${F}" 1>/dev/null
108 fi 186 fi
109 done 187 done
110 188
111 # have gconf reload the new schemas 189 # have gconf reload the new schemas
112 pids=$(pgrep -x gconfd-2) 190 pids=$(pgrep -x gconfd-2)
115 kill -HUP ${pids} 193 kill -HUP ${pids}
116 eend $? 194 eend $?
117 fi 195 fi
118} 196}
119 197
120 198# @FUNCTION: gnome2_icon_savelist
199# @DESCRIPTION:
121# Find the icons that are about to be installed and save their location 200# Find the icons that are about to be installed and save their location
122# in the GNOME2_ECLASS_ICONS environment variable 201# in the GNOME2_ECLASS_ICONS environment variable.
123# That function should be called from pkg_preinst 202# This function should be called from pkg_preinst.
124gnome2_icon_savelist() { 203gnome2_icon_savelist() {
204 has ${EAPI:-0} 0 1 2 && ! use prefix && ED="${D}"
125 pushd "${D}" &> /dev/null 205 pushd "${ED}" &> /dev/null
126 export GNOME2_ECLASS_ICONS=$(find 'usr/share/icons' -maxdepth 1 -mindepth 1 -type d 2> /dev/null) 206 export GNOME2_ECLASS_ICONS=$(find 'usr/share/icons' -maxdepth 1 -mindepth 1 -type d 2> /dev/null)
127 popd &> /dev/null 207 popd &> /dev/null
128} 208}
129 209
130 210# @FUNCTION: gnome2_icon_cache_update
211# @DESCRIPTION:
131# Updates Gtk+ icon cache files under /usr/share/icons if the current ebuild 212# Updates Gtk+ icon cache files under /usr/share/icons if the current ebuild
132# have installed anything under that location. 213# have installed anything under that location.
214# This function should be called from pkg_postinst and pkg_postrm.
133gnome2_icon_cache_update() { 215gnome2_icon_cache_update() {
216 has ${EAPI:-0} 0 1 2 && ! use prefix && EROOT="${ROOT}"
134 local updater="${ROOT}${GTK_UPDATE_ICON_CACHE}" 217 local updater="${EROOT}${GTK_UPDATE_ICON_CACHE}"
135 218
136 if [[ ! -x "${updater}" ]] ; then 219 if [[ ! -x "${updater}" ]] ; then
137 debug-print "${updater} is not executable" 220 debug-print "${updater} is not executable"
138 return 221 return
139 fi 222 fi
140 223
141 if [[ -z "${GNOME2_ECLASS_ICONS}" ]]; then 224 if [[ -z "${GNOME2_ECLASS_ICONS}" ]]; then
225 debug-print "No icon cache to update"
142 return 226 return
143 fi 227 fi
144
145 228
146 ebegin "Updating icons cache" 229 ebegin "Updating icons cache"
147 230
148 local retval=0 231 local retval=0
149 local fails=( ) 232 local fails=( )
150 233
151 for dir in ${GNOME2_ECLASS_ICONS} 234 for dir in ${GNOME2_ECLASS_ICONS}
152 do 235 do
153 if [[ -f "${ROOT}${dir}/index.theme" ]] ; then 236 if [[ -f "${EROOT}${dir}/index.theme" ]] ; then
154 local rv=0 237 local rv=0
155 238
156 "${updater}" -qf "${ROOT}${dir}" 239 "${updater}" -qf "${EROOT}${dir}"
157 rv=$? 240 rv=$?
158 241
159 if [[ ! $rv -eq 0 ]] ; then 242 if [[ ! $rv -eq 0 ]] ; then
160 debug-print "Updating cache failed on ${ROOT}${dir}" 243 debug-print "Updating cache failed on ${EROOT}${dir}"
161 244
162 # Add to the list of failures 245 # Add to the list of failures
163 fails[$(( ${#fails[@]} + 1 ))]="${ROOT}${dir}" 246 fails[$(( ${#fails[@]} + 1 ))]="${EROOT}${dir}"
164 247
165 retval=2 248 retval=2
166 fi 249 fi
250 elif [[ $(ls "${EROOT}${dir}") = "icon-theme.cache" ]]; then
251 # Clear stale cache files after theme uninstallation
252 rm "${EROOT}${dir}/icon-theme.cache"
253 fi
254
255 if [[ -z $(ls "${EROOT}${dir}") ]]; then
256 # Clear empty theme directories after theme uninstallation
257 rmdir "${EROOT}${dir}"
167 fi 258 fi
168 done 259 done
169 260
170 eend ${retval} 261 eend ${retval}
171 262
172 for f in "${fails[@]}" ; do 263 for f in "${fails[@]}" ; do
173 eerror "Failed to update cache with icon $f" 264 eerror "Failed to update cache with icon $f"
174 done 265 done
175} 266}
176 267
177 268# @FUNCTION: gnome2_omf_fix
269# @DESCRIPTION:
178# Workaround applied to Makefile rules in order to remove redundant 270# Workaround applied to Makefile rules in order to remove redundant
179# calls to scrollkeeper-update and sandbox violations. 271# calls to scrollkeeper-update and sandbox violations.
272# This function should be called from src_prepare.
180gnome2_omf_fix() { 273gnome2_omf_fix() {
181 local omf_makefiles filename 274 local omf_makefiles filename
182 275
183 omf_makefiles="$@" 276 omf_makefiles="$@"
184 277
185 if [[ -f ${S}/omf.make ]] ; then 278 if [[ -f ${S}/omf.make ]] ; then
186 omf_makefiles="${omf_makefiles} ${S}/omf.make" 279 omf_makefiles="${omf_makefiles} ${S}/omf.make"
280 fi
281
282 if [[ -f ${S}/gnome-doc-utils.make ]] ; then
283 omf_makefiles="${omf_makefiles} ${S}/gnome-doc-utils.make"
187 fi 284 fi
188 285
189 # testing fixing of all makefiles found 286 # testing fixing of all makefiles found
190 # The sort is important to ensure .am is listed before the respective .in for 287 # The sort is important to ensure .am is listed before the respective .in for
191 # maintainer mode regeneration not kicking in due to .am being newer than .in 288 # maintainer mode regeneration not kicking in due to .am being newer than .in
192 for filename in $(find ./ -name "Makefile.in" -o -name "Makefile.am" |sort) ; do 289 for filename in $(find "${S}" -name "Makefile.in" -o -name "Makefile.am" |sort) ; do
193 omf_makefiles="${omf_makefiles} ${filename}" 290 omf_makefiles="${omf_makefiles} ${filename}"
194 done 291 done
195 292
196 ebegin "Fixing OMF Makefiles" 293 ebegin "Fixing OMF Makefiles"
197 294
198 local retval=0 295 local retval=0
199 local fails=( ) 296 local fails=( )
200 297
201 for omf in ${omf_makefiles} ; do 298 for omf in ${omf_makefiles} ; do
202 local rv=0
203
204 sed -i -e 's:scrollkeeper-update:true:' "${omf}" 299 sed -i -e 's:scrollkeeper-update:true:' "${omf}"
205 retval=$? 300 retval=$?
206 301
207 if [[ ! $rv -eq 0 ]] ; then 302 if [[ $retval -ne 0 ]] ; then
208 debug-print "updating of ${omf} failed" 303 debug-print "updating of ${omf} failed"
209 304
210 # Add to the list of failures 305 # Add to the list of failures
211 fails[$(( ${#fails[@]} + 1 ))]=$omf 306 fails[$(( ${#fails[@]} + 1 ))]=$omf
212 307
219 for f in "${fails[@]}" ; do 314 for f in "${fails[@]}" ; do
220 eerror "Failed to update OMF Makefile $f" 315 eerror "Failed to update OMF Makefile $f"
221 done 316 done
222} 317}
223 318
319# @FUNCTION: gnome2_scrollkeeper_savelist
320# @DESCRIPTION:
321# Find the scrolls that are about to be installed and save their location
322# in the GNOME2_ECLASS_SCROLLS environment variable.
323# This function should be called from pkg_preinst.
324gnome2_scrollkeeper_savelist() {
325 has ${EAPI:-0} 0 1 2 && ! use prefix && ED="${D}"
326 pushd "${ED}" &> /dev/null
327 export GNOME2_ECLASS_SCROLLS=$(find 'usr/share/omf' -type f -name "*.omf" 2> /dev/null)
328 popd &> /dev/null
329}
224 330
331# @FUNCTION: gnome2_scrollkeeper_update
332# @DESCRIPTION:
225# Updates the global scrollkeeper database. 333# Updates the global scrollkeeper database.
334# This function should be called from pkg_postinst and pkg_postrm.
226gnome2_scrollkeeper_update() { 335gnome2_scrollkeeper_update() {
227 if [[ -x "${ROOT}${SCROLLKEEPER_UPDATE_BIN}" ]]; then 336 has ${EAPI:-0} 0 1 2 && ! use prefix && EROOT="${ROOT}"
337 local updater="${EROOT}${SCROLLKEEPER_UPDATE_BIN}"
338
339 if [[ ! -x "${updater}" ]] ; then
340 debug-print "${updater} is not executable"
341 return
342 fi
343
344 if [[ -z "${GNOME2_ECLASS_SCROLLS}" ]]; then
345 debug-print "No scroll cache to update"
346 return
347 fi
348
228 einfo "Updating scrollkeeper database ..." 349 ebegin "Updating scrollkeeper database ..."
229 "${ROOT}${SCROLLKEEPER_UPDATE_BIN}" -q -p "${ROOT}${SCROLLKEEPER_DIR}" 350 "${updater}" -q -p "${EROOT}${SCROLLKEEPER_DIR}"
230 fi 351 eend $?
231} 352}
232 353
354# @FUNCTION: gnome2_schemas_savelist
355# @DESCRIPTION:
356# Find if there is any GSettings schema to install and save the list in
357# GNOME2_ECLASS_GLIB_SCHEMAS variable.
358# This function should be called from pkg_preinst.
233gnome2_schemas_savelist() { 359gnome2_schemas_savelist() {
360 has ${EAPI:-0} 0 1 2 && ! use prefix && ED="${D}"
234 pushd "${D}" &>/dev/null 361 pushd "${ED}" &>/dev/null
235 export GNOME2_ECLASS_GLIB_SCHEMAS=$(find 'usr/share/glib-2.0/schemas' -name '*.gschema.xml' 2>/dev/null) 362 export GNOME2_ECLASS_GLIB_SCHEMAS=$(find 'usr/share/glib-2.0/schemas' -name '*.gschema.xml' 2>/dev/null)
236 popd &>/dev/null 363 popd &>/dev/null
237} 364}
238 365
366# @FUNCTION: gnome2_schemas_update
367# @USAGE: gnome2_schemas_update
368# @DESCRIPTION:
369# Updates GSettings schemas if GNOME2_ECLASS_GLIB_SCHEMAS has some.
370# This function should be called from pkg_postinst and pkg_postrm.
239gnome2_schemas_update() { 371gnome2_schemas_update() {
372 has ${EAPI:-0} 0 1 2 && ! use prefix && EROOT="${ROOT}"
240 local updater="${ROOT}${GLIB_COMPILE_SCHEMAS}" 373 local updater="${EROOT}${GLIB_COMPILE_SCHEMAS}"
241 374
242 if [[ ! -x ${updater} ]]; then 375 if [[ ! -x ${updater} ]]; then
243 debug-print "${updater} is not executable" 376 debug-print "${updater} is not executable"
244 return 377 return
245 fi 378 fi
246 379
247 if [[ -z ${GNOME2_ECLASS_GLIB_SCHEMAS} ]]; then 380 if [[ -z ${GNOME2_ECLASS_GLIB_SCHEMAS} ]]; then
248 debug-print "no schemas to update" 381 debug-print "No GSettings schemas to update"
249 return 382 return
250 fi 383 fi
251 384
252 ebegin "Updating GSettings schemas" 385 ebegin "Updating GSettings schemas"
253 ${updater} --allow-any-name "$@" "${ROOT%/}/usr/share/glib-2.0/schemas" &>/dev/null 386 ${updater} --allow-any-name "$@" "${EROOT%/}/usr/share/glib-2.0/schemas" &>/dev/null
254 eend $? 387 eend $?
255} 388}
389
390# @FUNCTION: gnome2_query_immodules_gtk2
391# @USAGE: gnome2_query_immodules_gtk2
392# @DESCRIPTION:
393# Updates gtk2 immodules/gdk-pixbuf loaders listing.
394gnome2_query_immodules_gtk2() {
395 local GTK2_CONFDIR="/etc/gtk-2.0/$(get_abi_CHOST)"
396
397 local query_exec="${EPREFIX}/usr/bin/gtk-query-immodules-2.0"
398 local gtk_conf="${EPREFIX}${GTK2_CONFDIR}/gtk.immodules"
399 local gtk_conf_dir=$(dirname "${gtk_conf}")
400
401 einfo "Generating Gtk2 immodules/gdk-pixbuf loaders listing:"
402 einfo "-> ${gtk_conf}"
403
404 mkdir -p "${gtk_conf_dir}"
405 local tmp_file=$(mktemp -t tmp.XXXXXXXXXXgtk_query_immodules)
406 if [ -z "${tmp_file}" ]; then
407 ewarn "gtk_query_immodules: cannot create temporary file"
408 return 1
409 fi
410
411 if ${query_exec} > "${tmp_file}"; then
412 cat "${tmp_file}" > "${gtk_conf}" || \
413 ewarn "Failed to write to ${gtk_conf}"
414 else
415 ewarn "Cannot update gtk.immodules, file generation failed"
416 fi
417 rm "${tmp_file}"
418}
419
420# @FUNCTION: gnome2_query_immodules_gtk3
421# @USAGE: gnome2_query_immodules_gtk3
422# @DESCRIPTION:
423# Updates gtk3 immodules/gdk-pixbuf loaders listing.
424gnome2_query_immodules_gtk3() {
425 "${EPREFIX}/usr/bin/gtk-query-immodules-3.0" --update-cache
426}
427
428# @FUNCTION: gnome2_disable_deprecation_warning
429# @DESCRIPTION:
430# Disable deprecation warnings commonly found in glib based packages.
431# Should be called from src_prepare.
432gnome2_disable_deprecation_warning() {
433 local retval=0
434 local fails=( )
435 local makefile
436
437 ebegin "Disabling deprecation warnings"
438 # The sort is important to ensure .am is listed before the respective .in for
439 # maintainer mode regeneration not kicking in due to .am being newer than .in
440 while read makefile ; do
441 if ! grep -qE "(DISABLE_DEPRECATED|GSEAL_ENABLE)" "${makefile}"; then
442 continue
443 fi
444
445 LC_ALL=C sed -r -i \
446 -e 's:-D[A-Z_]+_DISABLE_DEPRECATED:$(NULL):g' \
447 -e 's:-DGSEAL_ENABLE:$(NULL):g' \
448 -i "${makefile}"
449
450 if [[ $? -ne 0 ]]; then
451 # Add to the list of failures
452 fails+=( "${makefile}" )
453 retval=2
454 fi
455 done < <(find "${S}" -name "Makefile.in" \
456 -o -name "Makefile.am" -o -name "Makefile.decl" \
457 -o -name "configure.ac" -o -name "configure.in" \
458 | sort; echo configure)
459 eend ${retval}
460
461 for makefile in "${fails[@]}" ; do
462 ewarn "Failed to disable deprecation warnings in ${makefile}"
463 done
464}

Legend:
Removed from v.1.16  
changed lines
  Added in v.1.30

  ViewVC Help
Powered by ViewVC 1.1.20