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

Contents of /eclass/gnome2.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.116 - (hide annotations) (download)
Wed Dec 5 23:41:52 2012 UTC (2 years, 6 months ago) by cardoe
Branch: MAIN
Changes since 1.115: +7 -6 lines
The gnome2.eclass checks the configure script for certain items and
adjusts the arguments to econf based on those checks. Unfortunately
when checking the configure script it did not respect ECONF_SOURCE.

1 eva 1.105 # Copyright 1999-2012 Gentoo Foundation
2 blocke 1.1 # Distributed under the terms of the GNU General Public License v2
3 cardoe 1.116 # $Header: /var/cvsroot/gentoo-x86/eclass/gnome2.eclass,v 1.115 2012/12/02 11:07:09 pacho Exp $
4 leonardop 1.77
5 eva 1.91 # @ECLASS: gnome2.eclass
6     # @MAINTAINER:
7     # gnome@gentoo.org
8     # @BLURB:
9     # @DESCRIPTION:
10 leonardop 1.77 # Exports portage base functions used by ebuilds written for packages using the
11 leonardop 1.78 # GNOME framework. For additional functions, see gnome2-utils.eclass.
12 blocke 1.2
13 pacho 1.111 inherit eutils fdo-mime libtool gnome.org gnome2-utils
14 blocke 1.1
15 dang 1.86 case "${EAPI:-0}" in
16     0|1)
17     EXPORT_FUNCTIONS src_unpack src_compile src_install pkg_preinst pkg_postinst pkg_postrm
18     ;;
19 axs 1.107 2|3|4|5)
20 dang 1.86 EXPORT_FUNCTIONS src_unpack src_prepare src_configure src_compile src_install pkg_preinst pkg_postinst pkg_postrm
21     ;;
22 eva 1.90 *) die "EAPI=${EAPI} is not supported" ;;
23 dang 1.86 esac
24 leonardop 1.77
25 eva 1.91 # @ECLASS-VARIABLE: G2CONF
26     # @DEFAULT-UNSET
27     # @DESCRIPTION:
28 allanonjl 1.63 # Extra configure opts passed to econf
29 compnerd 1.81 G2CONF=${G2CONF:-""}
30 spider 1.19
31 eva 1.95 # @ECLASS-VARIABLE: GNOME2_LA_PUNT
32     # @DESCRIPTION:
33 pacho 1.111 # Should we delete ALL the .la files?
34 eva 1.95 # NOT to be used without due consideration.
35 pacho 1.111 if has ${EAPI:-0} 0 1 2 3 4; then
36     GNOME2_LA_PUNT=${GNOME2_LA_PUNT:-"no"}
37     else
38     GNOME2_LA_PUNT=${GNOME2_LA_PUNT:-""}
39     fi
40 eva 1.95
41 eva 1.91 # @ECLASS-VARIABLE: ELTCONF
42     # @DEFAULT-UNSET
43     # @DESCRIPTION:
44 allanonjl 1.63 # Extra options passed to elibtoolize
45 compnerd 1.81 ELTCONF=${ELTCONF:-""}
46 leonardop 1.59
47 eva 1.91 # @ECLASS-VARIABLE: USE_EINSTALL
48     # @DEFAULT-UNSET
49     # @DEPRECATED
50     # @DESCRIPTION:
51 allanonjl 1.63 # Should we use EINSTALL instead of DESTDIR
52 compnerd 1.81 USE_EINSTALL=${USE_EINSTALL:-""}
53 leonardop 1.59
54 eva 1.93 # @ECLASS-VARIABLE: SCROLLKEEPER_UPDATE
55 eva 1.91 # @DEPRECATED
56     # @DESCRIPTION:
57     # Whether to run scrollkeeper for this package or not.
58 compnerd 1.81 SCROLLKEEPER_UPDATE=${SCROLLKEEPER_UPDATE:-"1"}
59 leonardop 1.59
60 eva 1.91 # @ECLASS-VARIABLE: DOCS
61     # @DEFAULT-UNSET
62     # @DESCRIPTION:
63     # String containing documents passed to dodoc command.
64    
65     # @ECLASS-VARIABLE: GCONF_DEBUG
66     # @DEFAULT_UNSET
67     # @DESCRIPTION:
68     # Whether to handle debug or not.
69     # Some gnome applications support various levels of debugging (yes, no, minimum,
70     # etc), but using --disable-debug also removes g_assert which makes debugging
71     # harder. This variable should be set to yes for such packages for the eclass
72     # to handle it properly. It will enable minimal debug with USE=-debug.
73     # Note that this is most commonly found in configure.ac as GNOME_DEBUG_CHECK.
74 leonardop 1.59
75 foser 1.56
76 allanonjl 1.71 if [[ ${GCONF_DEBUG} != "no" ]]; then
77     IUSE="debug"
78     fi
79 blocke 1.1
80 leonardop 1.78
81 eva 1.91 # @FUNCTION: gnome2_src_unpack
82     # @DESCRIPTION:
83     # Stub function for old EAPI.
84 allanonjl 1.63 gnome2_src_unpack() {
85     unpack ${A}
86 eva 1.83 cd "${S}"
87 dang 1.86 has ${EAPI:-0} 0 1 && gnome2_src_prepare
88     }
89 foser 1.45
90 eva 1.91 # @FUNCTION: gnome2_src_prepare
91     # @DESCRIPTION:
92 ford_prefect 1.100 # Prepare environment for build, fix build of scrollkeeper documentation,
93     # run elibtoolize.
94 dang 1.86 gnome2_src_prepare() {
95 tetromino 1.103 # Prevent assorted access violations and test failures
96     gnome2_environment_reset
97 ford_prefect 1.100
98 allanonjl 1.63 # Prevent scrollkeeper access violations
99     gnome2_omf_fix
100 compnerd 1.81
101 eva 1.108 # Disable all deprecation warnings
102     gnome2_disable_deprecation_warning
103    
104 compnerd 1.81 # Run libtoolize
105 eva 1.94 if has ${EAPI:-0} 0 1 2 3; then
106     elibtoolize ${ELTCONF}
107     else
108     # Everything is fatal EAPI 4 onwards
109     nonfatal elibtoolize ${ELTCONF}
110     fi
111    
112 allanonjl 1.63 }
113 foser 1.45
114 eva 1.91 # @FUNCTION: gnome2_src_configure
115     # @DESCRIPTION:
116     # Gnome specific configure handling
117 allanonjl 1.63 gnome2_src_configure() {
118     # Update the GNOME configuration options
119 allanonjl 1.72 if [[ ${GCONF_DEBUG} != 'no' ]] ; then
120     if use debug ; then
121     G2CONF="${G2CONF} --enable-debug=yes"
122     fi
123 allanonjl 1.71 fi
124 compnerd 1.76
125 pacho 1.115 # Starting with EAPI=5, we consider packages installing gtk-doc to be
126     # handled by adding DEPEND="dev-util/gtk-doc-am" which provides tools to
127     # relink URLs in documentation to already installed documentation.
128     # This decision also greatly helps with constantly broken doc generation.
129     # Remember to drop 'doc' USE flag from your package if it was only used to
130     # rebuild docs.
131     # Preserve old behavior for older EAPI.
132 cardoe 1.116 if grep -q "enable-gtk-doc" ${ECONF_SOURCE:-.}/configure ; then
133 pacho 1.115 if has ${EAPI-0} 0 1 2 3 4 && has doc ${IUSE} ; then
134     G2CONF="${G2CONF} $(use_enable doc gtk-doc)"
135     else
136     G2CONF="${G2CONF} --disable-gtk-doc"
137     fi
138 compnerd 1.76 fi
139 blocke 1.1
140 pacho 1.102 # Pass --disable-maintainer-mode when needed
141 cardoe 1.116 if grep -q "^[[:space:]]*AM_MAINTAINER_MODE(\[enable\])" \
142     ${ECONF_SOURCE:-.}/configure.*; then
143 pacho 1.102 G2CONF="${G2CONF} --disable-maintainer-mode"
144     fi
145    
146 eva 1.105 # Pass --disable-scrollkeeper when possible
147 cardoe 1.116 if grep -q "disable-scrollkeeper" ${ECONF_SOURCE:-.}/configure; then
148 eva 1.105 G2CONF="${G2CONF} --disable-scrollkeeper"
149     fi
150    
151 pacho 1.109 # Pass --disable-silent-rules when possible (not needed for eapi5), bug #429308
152     if has ${EAPI:-0} 0 1 2 3 4; then
153 cardoe 1.116 if grep -q "disable-silent-rules" ${ECONF_SOURCE:-.}/configure; then
154 pacho 1.109 G2CONF="${G2CONF} --disable-silent-rules"
155     fi
156     fi
157    
158 pacho 1.110 # Pass --disable-schemas-install when possible
159 cardoe 1.116 if grep -q "disable-schemas-install" ${ECONF_SOURCE:-.}/configure; then
160 pacho 1.110 G2CONF="${G2CONF} --disable-schemas-install"
161     fi
162    
163 zmedico 1.98 # Avoid sandbox violations caused by gnome-vfs (bug #128289 and #345659)
164     addwrite "$(unset HOME; echo ~)/.gnome2"
165 allanonjl 1.70
166 ford_prefect 1.100 econf "$@" ${G2CONF}
167 blocke 1.9 }
168    
169 eva 1.91 # @FUNCTION: gnome2_src_compile
170     # @DESCRIPTION:
171     # Stub function for old EAPI.
172 blocke 1.9 gnome2_src_compile() {
173 dang 1.86 has ${EAPI:-0} 0 1 && gnome2_src_configure "$@"
174 blocke 1.1 emake || die "compile failure"
175     }
176    
177 eva 1.91 # @FUNCTION: gnome2_src_install
178     # @DESCRIPTION:
179     # Gnome specific install. Handles typical GConf and scrollkeeper setup
180 eva 1.95 # in packages and removal of .la files if requested
181 blocke 1.1 gnome2_src_install() {
182 abcd 1.87 has ${EAPI:-0} 0 1 2 && ! use prefix && ED="${D}"
183 azarah 1.22 # if this is not present, scrollkeeper-update may segfault and
184     # create bogus directories in /var/lib/
185 leonardop 1.77 local sk_tmp_dir="/var/lib/scrollkeeper"
186 eva 1.89 dodir "${sk_tmp_dir}" || die "dodir failed"
187 blocke 1.1
188 blocke 1.8 # we must delay gconf schema installation due to sandbox
189 blocke 1.3 export GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL="1"
190    
191 allanonjl 1.63 if [[ -z "${USE_EINSTALL}" || "${USE_EINSTALL}" = "0" ]]; then
192 leonardop 1.77 debug-print "Installing with 'make install'"
193 abcd 1.87 emake DESTDIR="${D}" "scrollkeeper_localstate_dir=${ED}${sk_tmp_dir} " "$@" install || die "install failed"
194 liquidx 1.30 else
195 leonardop 1.77 debug-print "Installing with 'einstall'"
196 abcd 1.87 einstall "scrollkeeper_localstate_dir=${ED}${sk_tmp_dir} " "$@" || die "einstall failed"
197 liquidx 1.30 fi
198 blocke 1.1
199 blocke 1.10 unset GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL
200    
201 pacho 1.112 # Handle documentation as 'default' for eapi5 and newer, bug #373131
202     if has ${EAPI:-0} 0 1 2 3 4; then
203     # Manual document installation
204     if [[ -n "${DOCS}" ]]; then
205     dodoc ${DOCS} || die "dodoc failed"
206     fi
207     else
208     if ! declare -p DOCS >/dev/null 2>&1 ; then
209     local d
210     for d in README* ChangeLog AUTHORS NEWS TODO CHANGES THANKS BUGS \
211     FAQ CREDITS CHANGELOG ; do
212     [[ -s "${d}" ]] && dodoc "${d}"
213     done
214 tetromino 1.114 elif declare -p DOCS | grep -q '^declare -a' ; then
215 pacho 1.112 dodoc "${DOCS[@]}"
216     else
217     dodoc ${DOCS}
218     fi
219 eva 1.89 fi
220 liquidx 1.30
221 allanonjl 1.63 # Do not keep /var/lib/scrollkeeper because:
222 leonardop 1.77 # 1. The scrollkeeper database is regenerated at pkg_postinst()
223 abcd 1.87 # 2. ${ED}/var/lib/scrollkeeper contains only indexes for the current pkg
224 liquidx 1.30 # thus it makes no sense if pkg_postinst ISN'T run for some reason.
225 abcd 1.87 rm -rf "${ED}${sk_tmp_dir}"
226 eva 1.105 rmdir "${ED}/var/lib" 2>/dev/null
227     rmdir "${ED}/var" 2>/dev/null
228 foser 1.45
229 allanonjl 1.63 # Make sure this one doesn't get in the portage db
230 abcd 1.87 rm -fr "${ED}/usr/share/applications/mimeinfo.cache"
231 eva 1.95
232     # Delete all .la files
233 pacho 1.111 if has ${EAPI:-0} 0 1 2 3 4; then
234     if [[ "${GNOME2_LA_PUNT}" != "no" ]]; then
235     ebegin "Removing .la files"
236     if ! { has static-libs ${IUSE//+} && use static-libs; }; then
237     find "${D}" -name '*.la' -exec rm -f {} + || die "la file removal failed"
238     fi
239     eend
240 nirbheek 1.99 fi
241 pacho 1.111 else
242     case "${GNOME2_LA_PUNT}" in
243     yes) prune_libtool_files --modules;;
244     no) ;;
245     *) prune_libtool_files;;
246     esac
247 eva 1.95 fi
248 spider 1.20 }
249    
250 eva 1.91 # @FUNCTION: gnome2_pkg_preinst
251     # @DESCRIPTION:
252     # Finds Icons, GConf and GSettings schemas for later handling in pkg_postinst
253 remi 1.84 gnome2_pkg_preinst() {
254     gnome2_gconf_savelist
255 remi 1.85 gnome2_icon_savelist
256 eva 1.88 gnome2_schemas_savelist
257 eva 1.105 gnome2_scrollkeeper_savelist
258 remi 1.84 }
259    
260 eva 1.91 # @FUNCTION: gnome2_pkg_postinst
261     # @DESCRIPTION:
262     # Handle scrollkeeper, GConf, GSettings, Icons, desktop and mime
263     # database updates.
264 liquidx 1.30 gnome2_pkg_postinst() {
265     gnome2_gconf_install
266 foser 1.45 fdo-mime_desktop_database_update
267     fdo-mime_mime_database_update
268 leonardop 1.54 gnome2_icon_cache_update
269 eva 1.88 gnome2_schemas_update
270 eva 1.105 gnome2_scrollkeeper_update
271 liquidx 1.30 }
272    
273 eva 1.91 # @#FUNCTION: gnome2_pkg_prerm
274     # @#DESCRIPTION:
275     # # FIXME Handle GConf schemas removal
276 foser 1.40 #gnome2_pkg_prerm() {
277     # gnome2_gconf_uninstall
278     #}
279 foser 1.39
280 eva 1.91 # @FUNCTION: gnome2_pkg_postrm
281     # @DESCRIPTION:
282     # Handle scrollkeeper, GSettings, Icons, desktop and mime database updates.
283 liquidx 1.30 gnome2_pkg_postrm() {
284 foser 1.45 fdo-mime_desktop_database_update
285     fdo-mime_mime_database_update
286 leonardop 1.54 gnome2_icon_cache_update
287 tetromino 1.104 gnome2_schemas_update
288 eva 1.105 gnome2_scrollkeeper_update
289 liquidx 1.30 }

  ViewVC Help
Powered by ViewVC 1.1.20