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

Contents of /eclass/gnome2.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.116 - (show annotations) (download)
Wed Dec 5 23:41:52 2012 UTC (2 years 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 # Copyright 1999-2012 Gentoo Foundation
2 # Distributed under the terms of the GNU General Public License v2
3 # $Header: /var/cvsroot/gentoo-x86/eclass/gnome2.eclass,v 1.115 2012/12/02 11:07:09 pacho Exp $
4
5 # @ECLASS: gnome2.eclass
6 # @MAINTAINER:
7 # gnome@gentoo.org
8 # @BLURB:
9 # @DESCRIPTION:
10 # Exports portage base functions used by ebuilds written for packages using the
11 # GNOME framework. For additional functions, see gnome2-utils.eclass.
12
13 inherit eutils fdo-mime libtool gnome.org gnome2-utils
14
15 case "${EAPI:-0}" in
16 0|1)
17 EXPORT_FUNCTIONS src_unpack src_compile src_install pkg_preinst pkg_postinst pkg_postrm
18 ;;
19 2|3|4|5)
20 EXPORT_FUNCTIONS src_unpack src_prepare src_configure src_compile src_install pkg_preinst pkg_postinst pkg_postrm
21 ;;
22 *) die "EAPI=${EAPI} is not supported" ;;
23 esac
24
25 # @ECLASS-VARIABLE: G2CONF
26 # @DEFAULT-UNSET
27 # @DESCRIPTION:
28 # Extra configure opts passed to econf
29 G2CONF=${G2CONF:-""}
30
31 # @ECLASS-VARIABLE: GNOME2_LA_PUNT
32 # @DESCRIPTION:
33 # Should we delete ALL the .la files?
34 # NOT to be used without due consideration.
35 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
41 # @ECLASS-VARIABLE: ELTCONF
42 # @DEFAULT-UNSET
43 # @DESCRIPTION:
44 # Extra options passed to elibtoolize
45 ELTCONF=${ELTCONF:-""}
46
47 # @ECLASS-VARIABLE: USE_EINSTALL
48 # @DEFAULT-UNSET
49 # @DEPRECATED
50 # @DESCRIPTION:
51 # Should we use EINSTALL instead of DESTDIR
52 USE_EINSTALL=${USE_EINSTALL:-""}
53
54 # @ECLASS-VARIABLE: SCROLLKEEPER_UPDATE
55 # @DEPRECATED
56 # @DESCRIPTION:
57 # Whether to run scrollkeeper for this package or not.
58 SCROLLKEEPER_UPDATE=${SCROLLKEEPER_UPDATE:-"1"}
59
60 # @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
75
76 if [[ ${GCONF_DEBUG} != "no" ]]; then
77 IUSE="debug"
78 fi
79
80
81 # @FUNCTION: gnome2_src_unpack
82 # @DESCRIPTION:
83 # Stub function for old EAPI.
84 gnome2_src_unpack() {
85 unpack ${A}
86 cd "${S}"
87 has ${EAPI:-0} 0 1 && gnome2_src_prepare
88 }
89
90 # @FUNCTION: gnome2_src_prepare
91 # @DESCRIPTION:
92 # Prepare environment for build, fix build of scrollkeeper documentation,
93 # run elibtoolize.
94 gnome2_src_prepare() {
95 # Prevent assorted access violations and test failures
96 gnome2_environment_reset
97
98 # Prevent scrollkeeper access violations
99 gnome2_omf_fix
100
101 # Disable all deprecation warnings
102 gnome2_disable_deprecation_warning
103
104 # Run libtoolize
105 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 }
113
114 # @FUNCTION: gnome2_src_configure
115 # @DESCRIPTION:
116 # Gnome specific configure handling
117 gnome2_src_configure() {
118 # Update the GNOME configuration options
119 if [[ ${GCONF_DEBUG} != 'no' ]] ; then
120 if use debug ; then
121 G2CONF="${G2CONF} --enable-debug=yes"
122 fi
123 fi
124
125 # 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 if grep -q "enable-gtk-doc" ${ECONF_SOURCE:-.}/configure ; then
133 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 fi
139
140 # Pass --disable-maintainer-mode when needed
141 if grep -q "^[[:space:]]*AM_MAINTAINER_MODE(\[enable\])" \
142 ${ECONF_SOURCE:-.}/configure.*; then
143 G2CONF="${G2CONF} --disable-maintainer-mode"
144 fi
145
146 # Pass --disable-scrollkeeper when possible
147 if grep -q "disable-scrollkeeper" ${ECONF_SOURCE:-.}/configure; then
148 G2CONF="${G2CONF} --disable-scrollkeeper"
149 fi
150
151 # Pass --disable-silent-rules when possible (not needed for eapi5), bug #429308
152 if has ${EAPI:-0} 0 1 2 3 4; then
153 if grep -q "disable-silent-rules" ${ECONF_SOURCE:-.}/configure; then
154 G2CONF="${G2CONF} --disable-silent-rules"
155 fi
156 fi
157
158 # Pass --disable-schemas-install when possible
159 if grep -q "disable-schemas-install" ${ECONF_SOURCE:-.}/configure; then
160 G2CONF="${G2CONF} --disable-schemas-install"
161 fi
162
163 # Avoid sandbox violations caused by gnome-vfs (bug #128289 and #345659)
164 addwrite "$(unset HOME; echo ~)/.gnome2"
165
166 econf "$@" ${G2CONF}
167 }
168
169 # @FUNCTION: gnome2_src_compile
170 # @DESCRIPTION:
171 # Stub function for old EAPI.
172 gnome2_src_compile() {
173 has ${EAPI:-0} 0 1 && gnome2_src_configure "$@"
174 emake || die "compile failure"
175 }
176
177 # @FUNCTION: gnome2_src_install
178 # @DESCRIPTION:
179 # Gnome specific install. Handles typical GConf and scrollkeeper setup
180 # in packages and removal of .la files if requested
181 gnome2_src_install() {
182 has ${EAPI:-0} 0 1 2 && ! use prefix && ED="${D}"
183 # if this is not present, scrollkeeper-update may segfault and
184 # create bogus directories in /var/lib/
185 local sk_tmp_dir="/var/lib/scrollkeeper"
186 dodir "${sk_tmp_dir}" || die "dodir failed"
187
188 # we must delay gconf schema installation due to sandbox
189 export GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL="1"
190
191 if [[ -z "${USE_EINSTALL}" || "${USE_EINSTALL}" = "0" ]]; then
192 debug-print "Installing with 'make install'"
193 emake DESTDIR="${D}" "scrollkeeper_localstate_dir=${ED}${sk_tmp_dir} " "$@" install || die "install failed"
194 else
195 debug-print "Installing with 'einstall'"
196 einstall "scrollkeeper_localstate_dir=${ED}${sk_tmp_dir} " "$@" || die "einstall failed"
197 fi
198
199 unset GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL
200
201 # 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 elif declare -p DOCS | grep -q '^declare -a' ; then
215 dodoc "${DOCS[@]}"
216 else
217 dodoc ${DOCS}
218 fi
219 fi
220
221 # Do not keep /var/lib/scrollkeeper because:
222 # 1. The scrollkeeper database is regenerated at pkg_postinst()
223 # 2. ${ED}/var/lib/scrollkeeper contains only indexes for the current pkg
224 # thus it makes no sense if pkg_postinst ISN'T run for some reason.
225 rm -rf "${ED}${sk_tmp_dir}"
226 rmdir "${ED}/var/lib" 2>/dev/null
227 rmdir "${ED}/var" 2>/dev/null
228
229 # Make sure this one doesn't get in the portage db
230 rm -fr "${ED}/usr/share/applications/mimeinfo.cache"
231
232 # Delete all .la files
233 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 fi
241 else
242 case "${GNOME2_LA_PUNT}" in
243 yes) prune_libtool_files --modules;;
244 no) ;;
245 *) prune_libtool_files;;
246 esac
247 fi
248 }
249
250 # @FUNCTION: gnome2_pkg_preinst
251 # @DESCRIPTION:
252 # Finds Icons, GConf and GSettings schemas for later handling in pkg_postinst
253 gnome2_pkg_preinst() {
254 gnome2_gconf_savelist
255 gnome2_icon_savelist
256 gnome2_schemas_savelist
257 gnome2_scrollkeeper_savelist
258 }
259
260 # @FUNCTION: gnome2_pkg_postinst
261 # @DESCRIPTION:
262 # Handle scrollkeeper, GConf, GSettings, Icons, desktop and mime
263 # database updates.
264 gnome2_pkg_postinst() {
265 gnome2_gconf_install
266 fdo-mime_desktop_database_update
267 fdo-mime_mime_database_update
268 gnome2_icon_cache_update
269 gnome2_schemas_update
270 gnome2_scrollkeeper_update
271 }
272
273 # @#FUNCTION: gnome2_pkg_prerm
274 # @#DESCRIPTION:
275 # # FIXME Handle GConf schemas removal
276 #gnome2_pkg_prerm() {
277 # gnome2_gconf_uninstall
278 #}
279
280 # @FUNCTION: gnome2_pkg_postrm
281 # @DESCRIPTION:
282 # Handle scrollkeeper, GSettings, Icons, desktop and mime database updates.
283 gnome2_pkg_postrm() {
284 fdo-mime_desktop_database_update
285 fdo-mime_mime_database_update
286 gnome2_icon_cache_update
287 gnome2_schemas_update
288 gnome2_scrollkeeper_update
289 }

  ViewVC Help
Powered by ViewVC 1.1.20