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

Contents of /eclass/gnome2.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.69 - (hide annotations) (download)
Tue Apr 18 20:49:04 2006 UTC (8 years, 6 months ago) by dang
Branch: MAIN
Changes since 1.68: +2 -3 lines
findutils is in system.  Remove explicit dep, for g/fbsd

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

  ViewVC Help
Powered by ViewVC 1.1.20