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

Contents of /eclass/gnome2.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.77 - (hide annotations) (download)
Tue Dec 12 02:58:22 2006 UTC (8 years ago) by leonardop
Branch: MAIN
Changes since 1.76: +74 -68 lines
* gnome2.eclass: Pre-split clean-ups.

  Added a small comment header at the top.

  Prefix $SCROLLKEEPER_DIR with $ROOT and make sure it's used only in
  gnome2_scrollkeeper_update().

  (gnome2_src_configure): Clarify the comment for the addwrite call.

  (gnome2_src_install): Replace $SCROLLKEEPER_DIR with the local
  $sk_tmp_dir, since this function creates this dir under $D. Replace
  single debug-print call with specific mesages according to the method of
  installation used.

  (gnome2_gconf_install), (gnome2_gconf_uninstall): Added short comment.
  Return early if $GCONFTOOL_BIN is not valid. Declare F as local.

  (gnome2_icon_cache_update): Added short comment. Show output only if the
  function actually performs an update.

  (gnome2_omf_fix): Added comment about the function before its declaration.
  Removed redundant addition to $omf_makefiles.

  (gnome2_scrollkeeper_update): Added short comment.

1 vapier 1.42 # Copyright 1999-2004 Gentoo Foundation
2 blocke 1.1 # Distributed under the terms of the GNU General Public License v2
3 leonardop 1.77 # $Header: /var/cvsroot/gentoo-x86/eclass/gnome2.eclass,v 1.76 2006/12/07 03:13:25 compnerd Exp $
4    
5     #
6     # gnome2.eclass
7     #
8     # Exports portage base functions used by ebuilds written for packages using the
9     # GNOME framework.
10     #
11     # Maintained by Gentoo's GNOME herd <gnome@gentoo.org>
12     #
13    
14 blocke 1.2
15 allanonjl 1.63 inherit libtool gnome.org debug fdo-mime eutils
16 blocke 1.1
17 leonardop 1.77
18 allanonjl 1.63 # Extra configure opts passed to econf
19     G2CONF=${G2CONF:=""}
20 spider 1.19
21 allanonjl 1.63 # Extra options passed to elibtoolize
22     ELTCONF=${ELTCONF:=""}
23 leonardop 1.59
24 allanonjl 1.63 # Should we use EINSTALL instead of DESTDIR
25     USE_EINSTALL=${USE_EINSTALL:=""}
26 leonardop 1.59
27 allanonjl 1.63 # Run scrollkeeper for this package?
28     SCROLLKEEPER_UPDATE=${SCROLLKEEPER_UPDATE:="1"}
29 leonardop 1.59
30 leonardop 1.77 # Directory where scrollkeeper-update should do its work
31     SCROLLKEEPER_DIR=${SCROLLKEEPER_DIR:="${ROOT}var/lib/scrollkeeper"}
32 leonardop 1.59
33 allanonjl 1.63 # Path to scrollkeeper-update
34 leonardop 1.77 SCROLLKEEPER_UPDATE_BIN=${SCROLLKEEPER_UPDATE_BIN:="${ROOT}usr/bin/scrollkeeper-update"}
35 foser 1.56
36 allanonjl 1.63 # Path to gconftool-2
37 leonardop 1.77 GCONFTOOL_BIN=${GCONFTOOL_BIN:="${ROOT}usr/bin/gconftool-2"}
38 foser 1.56
39 allanonjl 1.71 if [[ ${GCONF_DEBUG} != "no" ]]; then
40     IUSE="debug"
41     fi
42 blocke 1.1
43 dang 1.69 DEPEND=">=sys-apps/sed-4"
44 liquidx 1.34
45 allanonjl 1.63 gnome2_src_unpack() {
46     unpack ${A}
47     cd ${S}
48 foser 1.45
49 allanonjl 1.63 # Prevent scrollkeeper access violations
50     gnome2_omf_fix
51     }
52 foser 1.45
53 allanonjl 1.63 gnome2_src_configure() {
54     # Update the GNOME configuration options
55 allanonjl 1.72 if [[ ${GCONF_DEBUG} != 'no' ]] ; then
56     if use debug ; then
57     G2CONF="${G2CONF} --enable-debug=yes"
58     fi
59 allanonjl 1.71 fi
60 compnerd 1.76
61     # Prevent a QA warning
62     if hasq doc ${IUSE} ; then
63     G2CONF="${G2CONF} $(use_enable doc gtk-doc)"
64     fi
65 blocke 1.1
66 allanonjl 1.63 # Run libtoolize
67     elibtoolize ${ELTCONF}
68 blocke 1.9
69 leonardop 1.77 # Avoid sandbox violations caused by misbehaving packages (bug #128289)
70     addwrite "${ROOT}root/.gnome2"
71 allanonjl 1.70
72 allanonjl 1.63 # GST_REGISTRY is to work around gst-inspect trying to read/write /root
73     GST_REGISTRY="${S}/registry.xml" econf "$@" ${G2CONF} || die "configure failed"
74 blocke 1.9 }
75    
76     gnome2_src_compile() {
77 liquidx 1.36 gnome2_src_configure "$@"
78 blocke 1.1 emake || die "compile failure"
79     }
80    
81     gnome2_src_install() {
82 azarah 1.22 # if this is not present, scrollkeeper-update may segfault and
83     # create bogus directories in /var/lib/
84 leonardop 1.77 local sk_tmp_dir="/var/lib/scrollkeeper"
85     dodir "${sk_tmp_dir}"
86 blocke 1.1
87 blocke 1.8 # we must delay gconf schema installation due to sandbox
88 blocke 1.3 export GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL="1"
89    
90 allanonjl 1.63 if [[ -z "${USE_EINSTALL}" || "${USE_EINSTALL}" = "0" ]]; then
91 leonardop 1.77 debug-print "Installing with 'make install'"
92     make DESTDIR=${D} "scrollkeeper_localstate_dir=${D}${sk_tmp_dir} " "$@" install || die "install failed"
93 liquidx 1.30 else
94 leonardop 1.77 debug-print "Installing with 'einstall'"
95     einstall "scrollkeeper_localstate_dir=${D}${sk_tmp_dir} " "$@" || die "einstall failed"
96 liquidx 1.30 fi
97 blocke 1.1
98 blocke 1.10 unset GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL
99    
100 allanonjl 1.63 # Manual document installation
101     [[ -n "${DOCS}" ]] && dodoc ${DOCS}
102 liquidx 1.30
103 allanonjl 1.63 # Do not keep /var/lib/scrollkeeper because:
104 leonardop 1.77 # 1. The scrollkeeper database is regenerated at pkg_postinst()
105 liquidx 1.30 # 2. ${D}/var/lib/scrollkeeper contains only indexes for the current pkg
106     # thus it makes no sense if pkg_postinst ISN'T run for some reason.
107 allanonjl 1.63 if [[ -z "$(find ${D} -name '*.omf')" ]]; then
108 liquidx 1.30 export SCROLLKEEPER_UPDATE="0"
109 blocke 1.1 fi
110 leonardop 1.77 rm -rf "${D}${sk_tmp_dir}"
111 foser 1.45
112 allanonjl 1.63 # Make sure this one doesn't get in the portage db
113     rm -fr "${D}/usr/share/applications/mimeinfo.cache"
114 spider 1.20 }
115    
116    
117 leonardop 1.77
118     # Applies any schema files installed by the current ebuild to Gconf's database
119     # using gconftool-2
120 spider 1.20 gnome2_gconf_install() {
121 leonardop 1.77 if [[ ! -x ${GCONFTOOL_BIN} ]]; then
122     return
123     fi
124 foser 1.73
125 leonardop 1.77 # We are ready to install the GCONF Scheme now
126     unset GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL
127     export GCONF_CONFIG_SOURCE=$(${GCONFTOOL_BIN} --get-default-source)
128    
129     einfo "Installing GNOME 2 GConf schemas"
130    
131     local contents="${ROOT}/var/db/pkg/*/${PN}-${PVR}/CONTENTS"
132     local F
133 foser 1.73
134 leonardop 1.77 for F in $(grep "^obj /etc/gconf/schemas/.\+\.schemas\b" ${contents} | gawk '{print $2}' ); do
135     if [[ -e "${F}" ]]; then
136     # echo "DEBUG::gconf install ${F}"
137     ${GCONFTOOL_BIN} --makefile-install-rule ${F} 1>/dev/null
138     fi
139     done
140 foser 1.73
141 leonardop 1.77 # have gconf reload the new schemas
142     ebegin "Reloading GConf schemas"
143     killall -HUP gconfd-2
144     eend $?
145 liquidx 1.32 }
146    
147 leonardop 1.77 # Removes schema files previously installed by the current ebuild from Gconf's
148     # database.
149 foser 1.39 gnome2_gconf_uninstall() {
150 leonardop 1.77 if [[ ! -x ${GCONFTOOL_BIN} ]]; then
151     return
152     fi
153    
154     unset GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL
155     export GCONF_CONFIG_SOURCE=$(${GCONFTOOL_BIN} --get-default-source)
156 foser 1.39
157 leonardop 1.77 einfo "Uninstalling GNOME 2 GConf schemas"
158 allanonjl 1.63
159 leonardop 1.77 local contents="${ROOT}/var/db/pkg/*/${PN}-${PVR}/CONTENTS"
160     local F
161 allanonjl 1.63
162 leonardop 1.77 for F in $(grep "obj /etc/gconf/schemas" ${contents} | sed 's:obj \([^ ]*\) .*:\1:' ); do
163     # echo "DEBUG::gconf install ${F}"
164     ${GCONFTOOL_BIN} --makefile-uninstall-rule ${F} 1>/dev/null
165     done
166 foser 1.39 }
167    
168 leonardop 1.77 # Updates Gtk+ icon cache files under /usr/share/icons if the current ebuild
169     # have installed anything under that location.
170 leonardop 1.54 gnome2_icon_cache_update() {
171 allanonjl 1.63 local updater=$(type -p gtk-update-icon-cache 2> /dev/null)
172    
173     if [[ ! -x ${updater} ]] ; then
174     debug-print "${updater} is not executable"
175    
176 leonardop 1.54 return
177     fi
178    
179 allanonjl 1.63 if ! grep -q "obj /usr/share/icons" ${ROOT}/var/db/pkg/*/${PF}/CONTENTS
180     then
181     debug-print "No items to update"
182    
183     return
184     fi
185 leonardop 1.54
186 leonardop 1.77 ebegin "Updating icons cache"
187    
188 leonardop 1.54 local retval=0
189 allanonjl 1.63 local fails=( )
190    
191     for dir in $(find ${ROOT}/usr/share/icons -maxdepth 1 -mindepth 1 -type d)
192     do
193     if [[ -f "${dir}/index.theme" ]] ; then
194     local rv=0
195    
196     ${updater} -qf ${dir}
197     rv=$?
198    
199     if [[ ! $rv -eq 0 ]] ; then
200     debug-print "Updating cache failed on ${dir}"
201    
202     # Add to the list of failures
203     fails[$(( ${#fails[@]} + 1 ))]=$dir
204    
205     retval=2
206     fi
207 leonardop 1.62 fi
208 leonardop 1.54 done
209    
210 allanonjl 1.63 eend ${retval}
211    
212     for (( i = 0 ; i < ${#fails[@]} ; i++ )) ; do
213 compnerd 1.67 ### HACK!! This is needed until bash 3.1 is unmasked.
214     ## The current stable version of bash lists the sizeof fails to be 1
215     ## when there are no elements in the list because it is declared local.
216     ## In order to prevent the declaration from being in global scope, we
217     ## this hack to prevent an empty error message being printed for stable
218     ## users. -- compnerd && allanonjl
219 allanonjl 1.68 if [[ "${fails[i]}" != "" && "${fails[i]}" != "()" ]] ; then
220 compnerd 1.67 eerror "Failed to update cache with icon ${fails[i]}"
221     fi
222 allanonjl 1.63 done
223 leonardop 1.54 }
224    
225 leonardop 1.77 # Workaround applied to Makefile rules in order to remove redundant
226     # calls to scrollkeeper-update and sandbox violations.
227 liquidx 1.32 gnome2_omf_fix() {
228 allanonjl 1.63 local omf_makefiles filename
229 liquidx 1.32
230     omf_makefiles="$@"
231    
232 allanonjl 1.63 if [[ -f ${S}/omf.make ]] ; then
233     omf_makefiles="${omf_makefiles} ${S}/omf.make"
234     fi
235 liquidx 1.32
236 allanonjl 1.63 # testing fixing of all makefiles found
237     for filename in $(find ./ -name "Makefile.in" -o -name "Makefile.am") ; do
238     omf_makefiles="${omf_makefiles} ${filename}"
239     done
240 swegener 1.65
241 leonardop 1.61 ebegin "Fixing OMF Makefiles"
242 allanonjl 1.63
243 leonardop 1.61 local retval=0
244 allanonjl 1.63 local fails=( )
245    
246     for omf in ${omf_makefiles} ; do
247     local rv=0
248    
249     sed -i -e 's:scrollkeeper-update:true:' ${omf}
250     retval=$?
251    
252     if [[ ! $rv -eq 0 ]] ; then
253     debug-print "updating of ${omf} failed"
254    
255     # Add to the list of failures
256     fails[$(( ${#fails[@]} + 1 ))]=$omf
257    
258     retval=2
259     fi
260 liquidx 1.32 done
261 allanonjl 1.63
262 leonardop 1.61 eend $retval
263 foser 1.45
264 allanonjl 1.63 for (( i = 0 ; i < ${#fails[@]} ; i++ )) ; do
265 compnerd 1.67 ### HACK!! This is needed until bash 3.1 is unmasked.
266     ## The current stable version of bash lists the sizeof fails to be 1
267     ## when there are no elements in the list because it is declared local.
268     ## In order to prevent the declaration from being in global scope, we
269     ## this hack to prevent an empty error message being printed for stable
270     ## users. -- compnerd && allanonjl
271 allanonjl 1.68 if [[ "${fails[i]}" != "" && "${fails[i]}" != "()" ]] ; then
272 compnerd 1.67 eerror "Failed to update OMF Makefile ${fails[i]}"
273     fi
274 allanonjl 1.63 done
275 blocke 1.1 }
276    
277 leonardop 1.77 # Updates the scrollkeeper database if necessary. To force this action, make
278     # sure to set SCROLLKEPER_UPDATE to 1.
279 liquidx 1.30 gnome2_scrollkeeper_update() {
280 allanonjl 1.63 if [[ -x ${SCROLLKEEPER_UPDATE_BIN} && "${SCROLLKEEPER_UPDATE}" = "1" ]]
281 blocke 1.3 then
282 leonardop 1.60 einfo "Updating scrollkeeper database ..."
283 leonardop 1.77 ${SCROLLKEEPER_UPDATE_BIN} -q -p ${SCROLLKEEPER_DIR}
284 blocke 1.1 fi
285     }
286    
287 liquidx 1.30 gnome2_pkg_postinst() {
288     gnome2_gconf_install
289     gnome2_scrollkeeper_update
290 foser 1.45 fdo-mime_desktop_database_update
291     fdo-mime_mime_database_update
292 leonardop 1.54 gnome2_icon_cache_update
293 liquidx 1.30 }
294    
295 foser 1.40 #gnome2_pkg_prerm() {
296     # gnome2_gconf_uninstall
297     #}
298 foser 1.39
299 liquidx 1.30 gnome2_pkg_postrm() {
300     gnome2_scrollkeeper_update
301 foser 1.45 fdo-mime_desktop_database_update
302     fdo-mime_mime_database_update
303 leonardop 1.54 gnome2_icon_cache_update
304 liquidx 1.30 }
305    
306 allanonjl 1.63 EXPORT_FUNCTIONS src_unpack src_compile src_install pkg_postinst pkg_postrm

  ViewVC Help
Powered by ViewVC 1.1.20