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

Contents of /eclass/gnome2-utils.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.8 - (show annotations) (download)
Sat Mar 22 09:37:44 2008 UTC (6 years, 6 months ago) by remi
Branch: MAIN
Changes since 1.7: +71 -40 lines
fix gnome2 and xfce44 eclasses (see bug #155993)

1 # Copyright 1999-2006 Gentoo Foundation
2 # Distributed under the terms of the GNU General Public License v2
3 # $Header: /var/cvsroot/gentoo-x86/eclass/gnome2-utils.eclass,v 1.6 2007/06/14 20:46:18 dang Exp $
4
5 #
6 # gnome2-utils.eclass
7 #
8 # Set of auxiliary functions used to perform actions commonly needed by packages
9 # using the GNOME framework.
10 #
11 # Maintained by Gentoo's GNOME herd <gnome@gentoo.org>
12 #
13
14
15
16 # Path to gconftool-2
17 : ${GCONFTOOL_BIN:="${ROOT}usr/bin/gconftool-2"}
18
19 # Directory where scrollkeeper-update should do its work
20 : ${SCROLLKEEPER_DIR:="${ROOT}var/lib/scrollkeeper"}
21
22 # Path to scrollkeeper-update
23 : ${SCROLLKEEPER_UPDATE_BIN:="${ROOT}usr/bin/scrollkeeper-update"}
24
25
26
27 DEPEND=">=sys-apps/sed-4"
28
29
30
31 # Find the GConf schemas that are about to be installed and save their location
32 # in the GNOME2_ECLASS_SCHEMAS environment variable
33 gnome2_gconf_savelist() {
34 pushd "${D}" &> /dev/null
35 export GNOME2_ECLASS_SCHEMAS=$(find 'etc/gconf/schemas/' -name '*.schemas')
36 popd &> /dev/null
37 }
38
39
40 # Applies any schema files installed by the current ebuild to Gconf's database
41 # using gconftool-2
42 gnome2_gconf_install() {
43 local F
44
45 if [[ ! -x "${GCONFTOOL_BIN}" ]]; then
46 return
47 fi
48
49 if [[ -z "${GNOME2_ECLASS_SCHEMAS}" ]]; then
50 einfo "No GNOME 2 GConf schemas found"
51 return
52 fi
53
54 # We are ready to install the GCONF Scheme now
55 unset GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL
56 export GCONF_CONFIG_SOURCE="$("${GCONFTOOL_BIN}" --get-default-source)"
57
58 einfo "Installing GNOME 2 GConf schemas"
59
60 for F in ${GNOME2_ECLASS_SCHEMAS}; do
61 if [[ -e "${ROOT}${F}" ]]; then
62 # echo "DEBUG::gconf install ${F}"
63 "${GCONFTOOL_BIN}" --makefile-install-rule "${ROOT}${F}" 1>/dev/null
64 fi
65 done
66
67 # have gconf reload the new schemas
68 pids=$(pgrep -x gconfd-2)
69 if [[ $? == 0 ]] ; then
70 ebegin "Reloading GConf schemas"
71 kill -HUP ${pids}
72 eend $?
73 fi
74 }
75
76
77 # Removes schema files previously installed by the current ebuild from Gconf's
78 # database.
79 gnome2_gconf_uninstall() {
80 local F
81
82 if [[ ! -x "${GCONFTOOL_BIN}" ]]; then
83 return
84 fi
85
86 if [[ -z "${GNOME2_ECLASS_SCHEMAS}" ]]; then
87 einfo "No GNOME 2 GConf schemas found"
88 return
89 fi
90
91 unset GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL
92 export GCONF_CONFIG_SOURCE=$("${GCONFTOOL_BIN}" --get-default-source)
93
94 einfo "Uninstalling GNOME 2 GConf schemas"
95
96 for F in ${GNOME2_ECLASS_SCHEMAS}; do
97 if [[ -e "${ROOT}${F}" ]]; then
98 # echo "DEBUG::gconf uninstall ${F}"
99 "${GCONFTOOL_BIN}" --makefile-uninstall-rule "${ROOT}${F}" 1>/dev/null
100 fi
101 done
102
103 # have gconf reload the new schemas
104 pids=$(pgrep -x gconfd-2)
105 if [[ $? == 0 ]] ; then
106 ebegin "Reloading GConf schemas"
107 kill -HUP ${pids}
108 eend $?
109 fi
110 }
111
112
113 # Find the icons that are about to be installed and save their location
114 # in the GNOME2_ECLASS_ICONS environment variable
115 gnome2_icons_savelist() {
116 pushd "${D}" &> /dev/null
117 export GNOME2_ECLASS_ICONS=$(find 'usr/share/icons' -maxdepth 1 -mindepth 1 -type d)
118 popd &> /dev/null
119 }
120
121
122 # Updates Gtk+ icon cache files under /usr/share/icons if the current ebuild
123 # have installed anything under that location.
124 gnome2_icon_cache_update() {
125 local updater="$(type -p gtk-update-icon-cache 2> /dev/null)"
126
127 if [[ ! -x "${updater}" ]] ; then
128 debug-print "${updater} is not executable"
129 return
130 fi
131
132 if [[ -z "${GNOME2_ECLASS_ICONS}" ]]; then
133 return
134 fi
135
136
137 ebegin "Updating icons cache"
138
139 local retval=0
140 local fails=( )
141
142 for dir in ${GNOME2_ECLASS_ICONS}
143 do
144 if [[ -f "${ROOT}${dir}/index.theme" ]] ; then
145 local rv=0
146
147 "${updater}" -qf "${ROOT}${dir}"
148 rv=$?
149
150 if [[ ! $rv -eq 0 ]] ; then
151 debug-print "Updating cache failed on ${ROOT}${dir}"
152
153 # Add to the list of failures
154 fails[$(( ${#fails[@]} + 1 ))]="${ROOT}${dir}"
155
156 retval=2
157 fi
158 fi
159 done
160
161 eend ${retval}
162
163 for f in "${fails[@]}" ; do
164 eerror "Failed to update cache with icon $f"
165 done
166 }
167
168
169 # Workaround applied to Makefile rules in order to remove redundant
170 # calls to scrollkeeper-update and sandbox violations.
171 gnome2_omf_fix() {
172 local omf_makefiles filename
173
174 omf_makefiles="$@"
175
176 if [[ -f ${S}/omf.make ]] ; then
177 omf_makefiles="${omf_makefiles} ${S}/omf.make"
178 fi
179
180 # testing fixing of all makefiles found
181 for filename in $(find ./ -name "Makefile.in" -o -name "Makefile.am") ; do
182 omf_makefiles="${omf_makefiles} ${filename}"
183 done
184
185 ebegin "Fixing OMF Makefiles"
186
187 local retval=0
188 local fails=( )
189
190 for omf in ${omf_makefiles} ; do
191 local rv=0
192
193 sed -i -e 's:scrollkeeper-update:true:' "${omf}"
194 retval=$?
195
196 if [[ ! $rv -eq 0 ]] ; then
197 debug-print "updating of ${omf} failed"
198
199 # Add to the list of failures
200 fails[$(( ${#fails[@]} + 1 ))]=$omf
201
202 retval=2
203 fi
204 done
205
206 eend $retval
207
208 for (( i = 0 ; i < ${#fails[@]} ; i++ )) ; do
209 ### HACK!! This is needed until bash 3.1 is unmasked.
210 ## The current stable version of bash lists the sizeof fails to be 1
211 ## when there are no elements in the list because it is declared local.
212 ## In order to prevent the declaration from being in global scope, we
213 ## this hack to prevent an empty error message being printed for stable
214 ## users. -- compnerd && allanonjl
215 if [[ "${fails[i]}" != "" && "${fails[i]}" != "()" ]] ; then
216 eerror "Failed to update OMF Makefile ${fails[i]}"
217 fi
218 done
219 }
220
221
222 # Updates the global scrollkeeper database.
223 gnome2_scrollkeeper_update() {
224 if [[ -x "${SCROLLKEEPER_UPDATE_BIN}" ]]; then
225 einfo "Updating scrollkeeper database ..."
226 "${SCROLLKEEPER_UPDATE_BIN}" -q -p "${SCROLLKEEPER_DIR}"
227 fi
228 }

  ViewVC Help
Powered by ViewVC 1.1.20