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

Diff of /eclass/gst-plugins10.eclass

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 1.5 Revision 1.11
1# Copyright 1999-2004 Gentoo Foundation 1# Copyright 1999-2013 Gentoo Foundation
2# Distributed under the terms of the GNU General Public License v2 2# Distributed under the terms of the GNU General Public License v2
3# $Header: /var/cvsroot/gentoo-x86/eclass/gst-plugins10.eclass,v 1.5 2011/12/10 19:22:38 vapier Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/gst-plugins10.eclass,v 1.11 2013/09/29 17:47:13 eva Exp $
4 4
5# @ECLASS: gst-plugins10.eclass
6# @MAINTAINER:
7# gstreamer@gentoo.org
8# @AUTHOR:
9# Gilles Dartiguelongue <eva@gentoo.org>
10# Saleem Abdulrasool <compnerd@gentoo.org>
5# Author : foser <foser@gentoo.org> 11# foser <foser@gentoo.org>
6 12# zaheerm <zaheerm@gentoo.org>
7# gst-plugins eclass 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.
8# 18#
9# eclass to make external gst-plugins emergable on a per-plugin basis 19# GStreamer consuming applications should depend on the specific plugins they
10# to solve the problem with gst-plugins generating far too much unneeded deps 20# need as defined in their source code.
11# 21#
12# 3rd party applications using gstreamer now should depend on a set of plugins as
13# defined in the source, in case of spider usage obtain recommended plugins to use from 22# In case of spider usage, obtain recommended plugins to use from Gentoo
14# Gentoo developers responsible for gstreamer <gstreamer@gentoo.org> or the application 23# developers responsible for gstreamer <gstreamer@gentoo.org> or the application
15# developer. 24# developer.
16 25
17inherit eutils 26inherit eutils multilib toolchain-funcs versionator
18 27
28GST_EXPF=""
29case "${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 ;;
42esac
43EXPORT_FUNCTIONS ${GST_EXPF}
19 44
20### 45# @ECLASS-VARIABLE: GST_LA_PUNT
21# variable declarations 46# @DESCRIPTION:
22### 47# Should we delete all the .la files?
48# NOT to be used without due consideration.
49# Defaults to no for EAPI < 5.
50if has "${EAPI:-0}" 0 1 2 3; then
51 : ${GST_LA_PUNT:="no"}
52else
53 : ${GST_LA_PUNT:="yes"}
54fi
23 55
24# Create a major/minor combo for our SLOT and executables suffix 56# @ECLASS-VARIABLE: GST_PLUGINS_BUILD
25PVP=(${PV//[-\._]/ }) 57# @DESCRIPTION:
26#PV_MAJ_MIN=${PVP[0]}.${PVP[1]} 58# Defines the plugins to be built.
27PV_MAJ_MIN=0.10
28
29# Extract the plugin to build from the ebuild name
30# May be set by an ebuild and contain more than one indentifier, space seperated 59# May be set by an ebuild and contain more than one indentifier, space
31# (only src_configure can handle mutiple plugins at this time) 60# seperated (only src_configure can handle mutiple plugins at this time).
32GST_PLUGINS_BUILD=${PN/gst-plugins-/} 61: ${GST_PLUGINS_BUILD:=${PN/gst-plugins-/}}
33 62
34# Actual build dir, is the same as the configure switch name most of the time 63# @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.
35GST_PLUGINS_BUILD_DIR=${PN/gst-plugins-/} 67: ${GST_PLUGINS_BUILD_DIR:=${PN/gst-plugins-/}}
36 68
37# general common gst-plugins ebuild entries 69# @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.
75if has "${EAPI:-0}" 0 1 2 3; then
76 : ${GST_TARBALL_SUFFIX:="bz2"}
77else
78 : ${GST_TARBALL_SUFFIX:="xz"}
79fi
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
83if [[ ${GST_TARBALL_SUFFIX} == "xz" ]]; then
84 DEPEND="${DEPEND} app-arch/xz-utils"
85fi
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
99
38DESCRIPTION="${BUILD_GST_PLUGINS} plugin for gstreamer" 100DESCRIPTION="${BUILD_GST_PLUGINS} plugin for gstreamer"
39HOMEPAGE="http://gstreamer.freedesktop.org/" 101HOMEPAGE="http://gstreamer.freedesktop.org/"
102SRC_URI="http://gstreamer.freedesktop.org/src/${GST_ORG_MODULE}/${GST_ORG_MODULE}-${PV}.tar.${GST_TARBALL_SUFFIX}"
103
40LICENSE="GPL-2" 104LICENSE="GPL-2"
105case ${GST_ORG_PVP} in
106 0.10) SLOT="0.10" ;;
107 1.*) SLOT="1.0" ;;
108 *) die "Unkown gstreamer release."
109esac
41 110
42#SRC_URI="mirror://gnome/sources/gst-plugins/${PV_MAJ_MIN}/${MY_P}.tar.bz2" 111S="${WORKDIR}/${GST_ORG_MODULE}-${PV}"
43SLOT=${PV_MAJ_MIN}
44###
45# internal functions
46###
47 112
113RDEPEND="
114 >=dev-libs/glib-2.6:2
115 media-libs/gstreamer:${SLOT}
116"
117DEPEND="
118 >=sys-apps/sed-4
119 virtual/pkgconfig
120"
121
122if [[ ${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}"
126else
127 IUSE="nls"
128 DEPEND="${DEPEND} nls? ( >=sys-devel/gettext-0.17 )"
129fi
130
131#if [[ ${SLOT} == "0.10" ]]; then
132# XXX: verify with old ebuilds.
133# DEPEND="${DEPEND} dev-libs/liboil"
134#fi
135
136DEPEND="${DEPEND} ${RDEPEND}"
137
138# @FUNCTION: gst-plugins10_get_plugins
139# @INTERNAL
140# @DESCRIPTION:
141# Get the list of plugins requiring external dependencies.
142gst-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 "${S}"/configure.* | tr '[:upper:]' '[:lower:]')
146}
147
148# @FUNCTION: gst-plugins10_find_plugin_dir
149# @USAGE: gst-plugins10_find_plugin_dir [<build_dir>]
150# @INTERNAL
151# @DESCRIPTION:
152# Finds plugin build directory and cd to it.
153# Defaults to ${GST_PLUGINS_BUILD_DIR} if argument is not provided
48gst-plugins10_find_plugin_dir() { 154gst-plugins10_find_plugin_dir() {
155 local build_dir=${1:-${GST_PLUGINS_BUILD_DIR}}
49 156
50 if [[ ! -d ${S}/ext/${GST_PLUGINS_BUILD_DIR} ]]; then 157 if [[ ! -d ${S}/ext/${build_dir} ]]; then
51 if [[ ! -d ${S}/sys/${GST_PLUGINS_BUILD_DIR} ]]; then 158 if [[ ! -d ${S}/sys/${build_dir} ]]; then
52 ewarn "No such plugin directory" 159 ewarn "No such plugin directory"
53 die 160 die
54 fi 161 fi
55 einfo "Building system plugin ${GST_PLUGINS_BUILD_DIR} ..." 162 einfo "Building system plugin in ${build_dir}..."
56 cd "${S}"/sys/${GST_PLUGINS_BUILD_DIR} 163 cd "${S}"/sys/${build_dir}
57 else 164 else
58 einfo "Building external plugin ${GST_PLUGINS_BUILD_DIR} ..." 165 einfo "Building external plugin in ${build_dir}..."
59 cd "${S}"/ext/${GST_PLUGINS_BUILD_DIR} 166 cd "${S}"/ext/${build_dir}
60 fi 167 fi
61
62} 168}
63 169
64### 170# @FUNCTION: gst-plugins10_system_link
65# public functions 171# @USAGE: gst-plugins10_system_link gst-libs/gst/audio:gstreamer-audio [...]
66### 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.
178gst-plugins10_system_link() {
179 local directory libs pkgconfig pc tuple
180 pkgconfig=$(tc-getPKG_CONFIG)
67 181
182 for plugin_dir in ${GST_PLUGINS_BUILD_DIR} ; do
183 gst-plugins10_find_plugin_dir ${plugin_dir}
184
185 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 done
193}
194
195# @FUNCTION: gst-plugins10_remove_unversioned_binaries
196# @INTERNAL
197# @DESCRIPTION:
198# Remove the unversioned binaries gstreamer provides to prevent file collision
199# with other slots. DEPRECATED
68gst-plugins10_remove_unversioned_binaries() { 200gst-plugins10_remove_unversioned_binaries() {
69
70 # remove the unversioned binaries gstreamer provide
71 # this is to prevent these binaries to be owned by several SLOTs
72
73 cd "${D}"/usr/bin 201 cd "${D}"/usr/bin
74 local gst_bins 202 local gst_bins
75 for gst_bins in *-${PV_MAJ_MIN}; do 203 for gst_bins in *-${SLOT} ; do
76 [[ -e ${gst_bins} ]] || continue 204 [[ -e ${gst_bins} ]] || continue
77 rm ${gst_bins/-${PV_MAJ_MIN}/} 205 rm ${gst_bins/-${SLOT}/}
78 einfo "Removed ${gst_bins/-${PV_MAJ_MIN}/}" 206 einfo "Removed ${gst_bins/-${SLOT}/}"
79 done 207 done
80
81} 208}
209
210# @FUNCTION: gst-plugins10_src_configure
211# @DESCRIPTION:
212# Handles logic common to configuring gstreamer plugins
213gst-plugins10_src_configure() {
214 local plugin gst_conf
215
216 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}
260
261# @FUNCTION: gst-plugins10_src_compile
262# @DESCRIPTION:
263# Compiles requested gstreamer plugin.
264gst-plugins10_src_compile() {
265 local plugin_dir
266
267 has ${EAPI:-0} 0 1 && gst-plugins10_src_configure "$@"
268
269 for plugin_dir in ${GST_PLUGINS_BUILD_DIR} ; do
270 gst-plugins10_find_plugin_dir ${plugin_dir}
271
272 if has "${EAPI:-0}" 0 1 2 3 ; then
273 emake || die
274 else
275 default
276 fi
277 done
278}
279
280# @FUNCTION: gst-plugins10_src_install
281# @DESCRIPTION:
282# Installs requested gstreamer plugin.
283gst-plugins10_src_install() {
284 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
297 [[ ${GST_LA_PUNT} = "yes" ]] && prune_libtool_files --modules
298}
299

Legend:
Removed from v.1.5  
changed lines
  Added in v.1.11

  ViewVC Help
Powered by ViewVC 1.1.20