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

Contents of /eclass/gnome2-utils.eclass

Parent Directory Parent Directory | Revision Log Revision Log


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

1 leonardop 1.1 # Copyright 1999-2006 Gentoo Foundation
2     # Distributed under the terms of the GNU General Public License v2
3 eva 1.7 # $Header: /var/cvsroot/gentoo-x86/eclass/gnome2-utils.eclass,v 1.6 2007/06/14 20:46:18 dang Exp $
4 leonardop 1.1
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 remi 1.8 : ${GCONFTOOL_BIN:="${ROOT}usr/bin/gconftool-2"}
18 leonardop 1.1
19     # Directory where scrollkeeper-update should do its work
20 remi 1.8 : ${SCROLLKEEPER_DIR:="${ROOT}var/lib/scrollkeeper"}
21 leonardop 1.1
22     # Path to scrollkeeper-update
23 remi 1.8 : ${SCROLLKEEPER_UPDATE_BIN:="${ROOT}usr/bin/scrollkeeper-update"}
24 leonardop 1.1
25    
26    
27     DEPEND=">=sys-apps/sed-4"
28    
29    
30    
31 remi 1.8 # 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 leonardop 1.1 # Applies any schema files installed by the current ebuild to Gconf's database
41 swegener 1.2 # using gconftool-2
42 leonardop 1.1 gnome2_gconf_install() {
43 remi 1.8 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 leonardop 1.1 return
52     fi
53    
54     # We are ready to install the GCONF Scheme now
55     unset GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL
56 remi 1.8 export GCONF_CONFIG_SOURCE="$("${GCONFTOOL_BIN}" --get-default-source)"
57 leonardop 1.1
58     einfo "Installing GNOME 2 GConf schemas"
59    
60 remi 1.8 for F in ${GNOME2_ECLASS_SCHEMAS}; do
61     if [[ -e "${ROOT}${F}" ]]; then
62 leonardop 1.1 # echo "DEBUG::gconf install ${F}"
63 remi 1.8 "${GCONFTOOL_BIN}" --makefile-install-rule "${ROOT}${F}" 1>/dev/null
64 leonardop 1.1 fi
65     done
66    
67     # have gconf reload the new schemas
68 dang 1.6 pids=$(pgrep -x gconfd-2)
69 compnerd 1.3 if [[ $? == 0 ]] ; then
70     ebegin "Reloading GConf schemas"
71     kill -HUP ${pids}
72     eend $?
73     fi
74 leonardop 1.1 }
75    
76    
77     # Removes schema files previously installed by the current ebuild from Gconf's
78     # database.
79     gnome2_gconf_uninstall() {
80 remi 1.8 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 leonardop 1.1 return
89     fi
90    
91     unset GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL
92 remi 1.8 export GCONF_CONFIG_SOURCE=$("${GCONFTOOL_BIN}" --get-default-source)
93 leonardop 1.1
94     einfo "Uninstalling GNOME 2 GConf schemas"
95    
96 remi 1.8 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 leonardop 1.1
113 remi 1.8 # 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 leonardop 1.1 }
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 remi 1.8 local updater="$(type -p gtk-update-icon-cache 2> /dev/null)"
126 leonardop 1.1
127 remi 1.8 if [[ ! -x "${updater}" ]] ; then
128 leonardop 1.1 debug-print "${updater} is not executable"
129 remi 1.8 return
130     fi
131 leonardop 1.1
132 remi 1.8 if [[ -z "${GNOME2_ECLASS_ICONS}" ]]; then
133 leonardop 1.1 return
134     fi
135    
136 remi 1.8
137 leonardop 1.1 ebegin "Updating icons cache"
138    
139     local retval=0
140     local fails=( )
141    
142 remi 1.8 for dir in ${GNOME2_ECLASS_ICONS}
143 leonardop 1.1 do
144 remi 1.8 if [[ -f "${ROOT}${dir}/index.theme" ]] ; then
145 leonardop 1.1 local rv=0
146    
147 remi 1.8 "${updater}" -qf "${ROOT}${dir}"
148 leonardop 1.1 rv=$?
149    
150     if [[ ! $rv -eq 0 ]] ; then
151 remi 1.8 debug-print "Updating cache failed on ${ROOT}${dir}"
152 leonardop 1.1
153     # Add to the list of failures
154 remi 1.8 fails[$(( ${#fails[@]} + 1 ))]="${ROOT}${dir}"
155 leonardop 1.1
156     retval=2
157     fi
158     fi
159     done
160    
161     eend ${retval}
162    
163 remi 1.8 for f in "${fails[@]}" ; do
164     eerror "Failed to update cache with icon $f"
165 leonardop 1.1 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 remi 1.8 sed -i -e 's:scrollkeeper-update:true:' "${omf}"
194 leonardop 1.1 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 remi 1.8 if [[ -x "${SCROLLKEEPER_UPDATE_BIN}" ]]; then
225 leonardop 1.1 einfo "Updating scrollkeeper database ..."
226 remi 1.8 "${SCROLLKEEPER_UPDATE_BIN}" -q -p "${SCROLLKEEPER_DIR}"
227 leonardop 1.1 fi
228     }

  ViewVC Help
Powered by ViewVC 1.1.20