/[gentoo-x86]/eclass/gst-plugins10.eclass
Gentoo

Contents of /eclass/gst-plugins10.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.12 - (hide annotations) (download)
Sat Apr 5 09:19:19 2014 UTC (3 months, 1 week ago) by tetromino
Branch: MAIN
CVS Tags: HEAD
Changes since 1.11: +3 -3 lines
Use LC_ALL=C for tr call; fixes invalid configure options when using Turkish locale (bug #490894, thanks to Emre Eryilmaz and Samuli Suominen).

1 tetromino 1.12 # Copyright 1999-2014 Gentoo Foundation
2 zaheerm 1.1 # Distributed under the terms of the GNU General Public License v2
3 tetromino 1.12 # $Header: /var/cvsroot/gentoo-x86/eclass/gst-plugins10.eclass,v 1.11 2013/09/29 17:47:13 eva Exp $
4 zaheerm 1.1
5 eva 1.8 # @ECLASS: gst-plugins10.eclass
6     # @MAINTAINER:
7     # gstreamer@gentoo.org
8     # @AUTHOR:
9     # Gilles Dartiguelongue <eva@gentoo.org>
10     # Saleem Abdulrasool <compnerd@gentoo.org>
11     # foser <foser@gentoo.org>
12     # zaheerm <zaheerm@gentoo.org>
13     # @BLURB: Manages build for invididual ebuild for gst-plugins.
14     # @DESCRIPTION:
15     # Eclass to make external gst-plugins emergable on a per-plugin basis and
16     # to solve the problem with gst-plugins generating far too much unneeded
17     # dependancies.
18 zaheerm 1.1 #
19 eva 1.8 # GStreamer consuming applications should depend on the specific plugins they
20     # need as defined in their source code.
21 zaheerm 1.1 #
22 eva 1.8 # In case of spider usage, obtain recommended plugins to use from Gentoo
23     # developers responsible for gstreamer <gstreamer@gentoo.org> or the application
24 leio 1.4 # developer.
25 zaheerm 1.1
26 eva 1.8 inherit eutils multilib toolchain-funcs versionator
27 zaheerm 1.1
28 eva 1.8 GST_EXPF=""
29     case "${EAPI:-0}" in
30     2|3|4|5)
31     GST_EXPF="src_configure src_compile src_install"
32     ;;
33     1)
34     GST_EXPF="src_compile src_install"
35     ;;
36     0)
37     die "EAPI=\"${EAPI:-0}\" is not supported anymore"
38     ;;
39     *)
40     die "EAPI=\"${EAPI}\" is not supported yet"
41     ;;
42     esac
43     EXPORT_FUNCTIONS ${GST_EXPF}
44    
45     # @ECLASS-VARIABLE: GST_LA_PUNT
46     # @DESCRIPTION:
47     # Should we delete all the .la files?
48     # NOT to be used without due consideration.
49 eva 1.9 # Defaults to no for EAPI < 5.
50 eva 1.8 if has "${EAPI:-0}" 0 1 2 3; then
51     : ${GST_LA_PUNT:="no"}
52     else
53     : ${GST_LA_PUNT:="yes"}
54     fi
55    
56     # @ECLASS-VARIABLE: GST_PLUGINS_BUILD
57     # @DESCRIPTION:
58     # Defines the plugins to be built.
59     # May be set by an ebuild and contain more than one indentifier, space
60     # seperated (only src_configure can handle mutiple plugins at this time).
61 eva 1.10 : ${GST_PLUGINS_BUILD:=${PN/gst-plugins-/}}
62 zaheerm 1.1
63 eva 1.8 # @ECLASS-VARIABLE: GST_PLUGINS_BUILD_DIR
64     # @DESCRIPTION:
65     # Actual build directory of the plugin.
66     # Most often the same as the configure switch name.
67 eva 1.10 : ${GST_PLUGINS_BUILD_DIR:=${PN/gst-plugins-/}}
68 zaheerm 1.1
69 eva 1.8 # @ECLASS-VARIABLE: GST_TARBALL_SUFFIX
70     # @DESCRIPTION:
71     # Most projects hosted on gstreamer.freedesktop.org mirrors provide tarballs as
72     # tar.bz2 or tar.xz. This eclass defaults to bz2 for EAPI 0, 1, 2, 3 and
73     # defaults to xz for everything else. This is because the gstreamer mirrors
74     # are moving to only have xz tarballs for new releases.
75     if has "${EAPI:-0}" 0 1 2 3; then
76     : ${GST_TARBALL_SUFFIX:="bz2"}
77     else
78     : ${GST_TARBALL_SUFFIX:="xz"}
79     fi
80    
81     # Even though xz-utils are in @system, they must still be added to DEPEND; see
82     # http://archives.gentoo.org/gentoo-dev/msg_a0d4833eb314d1be5d5802a3b710e0a4.xml
83     if [[ ${GST_TARBALL_SUFFIX} == "xz" ]]; then
84     DEPEND="${DEPEND} app-arch/xz-utils"
85     fi
86    
87     # @ECLASS-VARIABLE: GST_ORG_MODULE
88     # @DESCRIPTION:
89     # Name of the module as hosted on gstreamer.freedesktop.org mirrors.
90     # Leave unset if package name matches module name.
91     : ${GST_ORG_MODULE:=$PN}
92    
93     # @ECLASS-VARIABLE: GST_ORG_PVP
94     # @INTERNAL
95     # @DESCRIPTION:
96     # Major and minor numbers of the version number.
97     : ${GST_ORG_PVP:=$(get_version_component_range 1-2)}
98 zaheerm 1.1
99    
100     DESCRIPTION="${BUILD_GST_PLUGINS} plugin for gstreamer"
101     HOMEPAGE="http://gstreamer.freedesktop.org/"
102 eva 1.8 SRC_URI="http://gstreamer.freedesktop.org/src/${GST_ORG_MODULE}/${GST_ORG_MODULE}-${PV}.tar.${GST_TARBALL_SUFFIX}"
103    
104 zaheerm 1.1 LICENSE="GPL-2"
105 eva 1.11 case ${GST_ORG_PVP} in
106     0.10) SLOT="0.10" ;;
107     1.*) SLOT="1.0" ;;
108     *) die "Unkown gstreamer release."
109     esac
110 eva 1.8
111     S="${WORKDIR}/${GST_ORG_MODULE}-${PV}"
112 zaheerm 1.1
113 eva 1.8 RDEPEND="
114     >=dev-libs/glib-2.6:2
115     media-libs/gstreamer:${SLOT}
116     "
117     DEPEND="
118     >=sys-apps/sed-4
119     virtual/pkgconfig
120     "
121    
122     if [[ ${PN} != ${GST_ORG_MODULE} ]]; then
123     # Do not run test phase for invididual plugin ebuilds.
124     RESTRICT="test"
125     RDEPEND="${RDEPEND} >=media-libs/${GST_ORG_MODULE}-${PV}:${SLOT}"
126     else
127     IUSE="nls"
128     DEPEND="${DEPEND} nls? ( >=sys-devel/gettext-0.17 )"
129     fi
130    
131     #if [[ ${SLOT} == "0.10" ]]; then
132     # XXX: verify with old ebuilds.
133     # DEPEND="${DEPEND} dev-libs/liboil"
134     #fi
135    
136     DEPEND="${DEPEND} ${RDEPEND}"
137    
138     # @FUNCTION: gst-plugins10_get_plugins
139     # @INTERNAL
140     # @DESCRIPTION:
141     # Get the list of plugins requiring external dependencies.
142     gst-plugins10_get_plugins() {
143     # Must be called from src_prepare/src_configure
144     GST_PLUGINS_LIST=$(sed -rn 's/^AG_GST_CHECK_FEATURE\((\w+),.*/ \1 /p' \
145 tetromino 1.12 "${S}"/configure.* | LC_ALL='C' tr '[:upper:]' '[:lower:]')
146 eva 1.8 }
147 zaheerm 1.1
148 eva 1.8 # @FUNCTION: gst-plugins10_find_plugin_dir
149 eva 1.10 # @USAGE: gst-plugins10_find_plugin_dir [<build_dir>]
150 eva 1.8 # @INTERNAL
151     # @DESCRIPTION:
152     # Finds plugin build directory and cd to it.
153 eva 1.10 # Defaults to ${GST_PLUGINS_BUILD_DIR} if argument is not provided
154 zaheerm 1.1 gst-plugins10_find_plugin_dir() {
155 eva 1.10 local build_dir=${1:-${GST_PLUGINS_BUILD_DIR}}
156    
157     if [[ ! -d ${S}/ext/${build_dir} ]]; then
158     if [[ ! -d ${S}/sys/${build_dir} ]]; then
159 zaheerm 1.1 ewarn "No such plugin directory"
160     die
161     fi
162 eva 1.10 einfo "Building system plugin in ${build_dir}..."
163     cd "${S}"/sys/${build_dir}
164 zaheerm 1.1 else
165 eva 1.10 einfo "Building external plugin in ${build_dir}..."
166     cd "${S}"/ext/${build_dir}
167 zaheerm 1.1 fi
168 eva 1.8 }
169    
170     # @FUNCTION: gst-plugins10_system_link
171     # @USAGE: gst-plugins10_system_link gst-libs/gst/audio:gstreamer-audio [...]
172     # @DESCRIPTION:
173     # Walks through makefiles in order to make sure build will link against system
174     # librairies.
175     # Takes a list of path fragments and corresponding pkgconfig libraries
176     # separated by colon (:). Will replace the path fragment by the output of
177     # pkgconfig.
178     gst-plugins10_system_link() {
179     local directory libs pkgconfig pc tuple
180     pkgconfig=$(tc-getPKG_CONFIG)
181    
182 eva 1.10 for plugin_dir in ${GST_PLUGINS_BUILD_DIR} ; do
183     gst-plugins10_find_plugin_dir ${plugin_dir}
184 zaheerm 1.1
185 eva 1.10 for tuple in $@ ; do
186     directory="$(echo ${tuple} | cut -f1 -d':')"
187     pc="$(echo ${tuple} | cut -f2 -d':')-${SLOT}"
188     libs="$(${pkgconfig} --libs-only-l ${pc})"
189     sed -e "s:\$(top_builddir)/${directory}/.*\.la:${libs}:" \
190     -i Makefile.am Makefile.in || die
191     done
192 eva 1.8 done
193 zaheerm 1.1 }
194    
195 eva 1.8 # @FUNCTION: gst-plugins10_remove_unversioned_binaries
196     # @INTERNAL
197     # @DESCRIPTION:
198     # Remove the unversioned binaries gstreamer provides to prevent file collision
199 eva 1.9 # with other slots. DEPRECATED
200 zaheerm 1.1 gst-plugins10_remove_unversioned_binaries() {
201 vapier 1.5 cd "${D}"/usr/bin
202     local gst_bins
203 eva 1.8 for gst_bins in *-${SLOT} ; do
204 vapier 1.5 [[ -e ${gst_bins} ]] || continue
205 eva 1.8 rm ${gst_bins/-${SLOT}/}
206     einfo "Removed ${gst_bins/-${SLOT}/}"
207 zaheerm 1.1 done
208 eva 1.8 }
209    
210     # @FUNCTION: gst-plugins10_src_configure
211 eva 1.9 # @DESCRIPTION:
212     # Handles logic common to configuring gstreamer plugins
213 eva 1.8 gst-plugins10_src_configure() {
214     local plugin gst_conf
215 zaheerm 1.1
216 eva 1.8 if has ${EAPI:-0} 0 1 2 3 ; then
217     gst_conf="${gst_conf} --disable-dependency-tracking"
218     fi
219    
220     if has ${EAPI:-0} 0 1 2 3 4 ; then
221     gst_conf="${gst_conf} --disable-silent-rules"
222     fi
223    
224     gst-plugins10_get_plugins
225    
226     for plugin in ${GST_PLUGINS_LIST} ; do
227     if has ${plugin} ${GST_PLUGINS_BUILD} ; then
228     gst_conf="${gst_conf} --enable-${plugin}"
229     else
230     gst_conf="${gst_conf} --disable-${plugin}"
231     fi
232     done
233    
234     if grep -q "ORC_CHECK" configure.* ; then
235     if in_iuse orc ; then
236     gst_conf="${gst_conf} $(use_enable orc)"
237     else
238     gst_conf="${gst_conf} --disable-orc"
239     fi
240     fi
241    
242     if grep -q "AM_MAINTAINER_MODE" configure.* ; then
243     gst_conf="${gst_conf} --disable-maintainer-mode"
244     fi
245    
246     if grep -q "disable-schemas-compile" configure ; then
247     gst_conf="${gst_conf} --disable-schemas-compile"
248     fi
249    
250     if [[ ${PN} == ${GST_ORG_MODULE} ]]; then
251     gst_conf="${gst_conf} $(use_enable nls)"
252     fi
253    
254     einfo "Configuring to build ${GST_PLUGINS_BUILD} plugin(s) ..."
255     econf \
256     --with-package-name="Gentoo GStreamer ebuild" \
257     --with-package-origin="http://www.gentoo.org" \
258     ${gst_conf} $@
259 zaheerm 1.1 }
260 eva 1.8
261     # @FUNCTION: gst-plugins10_src_compile
262 eva 1.9 # @DESCRIPTION:
263     # Compiles requested gstreamer plugin.
264 eva 1.8 gst-plugins10_src_compile() {
265 eva 1.10 local plugin_dir
266    
267 eva 1.8 has ${EAPI:-0} 0 1 && gst-plugins10_src_configure "$@"
268    
269 eva 1.10 for plugin_dir in ${GST_PLUGINS_BUILD_DIR} ; do
270     gst-plugins10_find_plugin_dir ${plugin_dir}
271 eva 1.8
272 eva 1.10 if has "${EAPI:-0}" 0 1 2 3 ; then
273     emake || die
274     else
275     default
276     fi
277     done
278 eva 1.8 }
279    
280     # @FUNCTION: gst-plugins10_src_install
281 eva 1.9 # @DESCRIPTION:
282     # Installs requested gstreamer plugin.
283 eva 1.8 gst-plugins10_src_install() {
284 eva 1.10 local plugin_dir
285    
286     for plugin_dir in ${GST_PLUGINS_BUILD_DIR} ; do
287     gst-plugins10_find_plugin_dir ${plugin_dir}
288    
289     if has "${EAPI:-0}" 0 1 2 3 ; then
290     emake install DESTDIR="${D}" || die
291     [[ -e README ]] && dodoc README
292     else
293     default
294     fi
295     done
296 eva 1.8
297     [[ ${GST_LA_PUNT} = "yes" ]] && prune_libtool_files --modules
298     }

  ViewVC Help
Powered by ViewVC 1.1.20