/[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.3 Revision 1.9
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.3 2010/08/12 10:48:59 pva Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/gst-plugins10.eclass,v 1.9 2013/01/16 22:52:37 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 <gnome@gentoo.org>, the application developer 23# developers responsible for gstreamer <gstreamer@gentoo.org> or the application
15# or the gstreamer team. 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-/} 61GST_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-/} 67GST_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"
105SLOT="${GST_ORG_PVP}"
41 106
42#SRC_URI="mirror://gnome/sources/gst-plugins/${PV_MAJ_MIN}/${MY_P}.tar.bz2" 107S="${WORKDIR}/${GST_ORG_MODULE}-${PV}"
43SLOT=${PV_MAJ_MIN}
44###
45# internal functions
46###
47 108
109RDEPEND="
110 >=dev-libs/glib-2.6:2
111 media-libs/gstreamer:${SLOT}
112"
113DEPEND="
114 >=sys-apps/sed-4
115 virtual/pkgconfig
116"
117
118if [[ ${PN} != ${GST_ORG_MODULE} ]]; then
119 # Do not run test phase for invididual plugin ebuilds.
120 RESTRICT="test"
121 RDEPEND="${RDEPEND} >=media-libs/${GST_ORG_MODULE}-${PV}:${SLOT}"
122else
123 IUSE="nls"
124 DEPEND="${DEPEND} nls? ( >=sys-devel/gettext-0.17 )"
125fi
126
127#if [[ ${SLOT} == "0.10" ]]; then
128# XXX: verify with old ebuilds.
129# DEPEND="${DEPEND} dev-libs/liboil"
130#fi
131
132DEPEND="${DEPEND} ${RDEPEND}"
133
134# @FUNCTION: gst-plugins10_get_plugins
135# @INTERNAL
136# @DESCRIPTION:
137# Get the list of plugins requiring external dependencies.
138gst-plugins10_get_plugins() {
139 # Must be called from src_prepare/src_configure
140 GST_PLUGINS_LIST=$(sed -rn 's/^AG_GST_CHECK_FEATURE\((\w+),.*/ \1 /p' \
141 "${S}"/configure.* | tr '[:upper:]' '[:lower:]')
142}
143
144# @FUNCTION: gst-plugins10_find_plugin_dir
145# @INTERNAL
146# @DESCRIPTION:
147# Finds plugin build directory and cd to it.
48gst-plugins10_find_plugin_dir() { 148gst-plugins10_find_plugin_dir() {
49
50 if [[ ! -d ${S}/ext/${GST_PLUGINS_BUILD_DIR} ]]; then 149 if [[ ! -d ${S}/ext/${GST_PLUGINS_BUILD_DIR} ]]; then
51 if [[ ! -d ${S}/sys/${GST_PLUGINS_BUILD_DIR} ]]; then 150 if [[ ! -d ${S}/sys/${GST_PLUGINS_BUILD_DIR} ]]; then
52 ewarn "No such plugin directory" 151 ewarn "No such plugin directory"
53 die 152 die
54 fi 153 fi
55 einfo "Building system plugin ..." 154 einfo "Building system plugin ${GST_PLUGINS_BUILD_DIR} ..."
56 cd "${S}"/sys/${GST_PLUGINS_BUILD_DIR} 155 cd "${S}"/sys/${GST_PLUGINS_BUILD_DIR}
57 else 156 else
58 einfo "Building external plugin ..." 157 einfo "Building external plugin ${GST_PLUGINS_BUILD_DIR} ..."
59 cd "${S}"/ext/${GST_PLUGINS_BUILD_DIR} 158 cd "${S}"/ext/${GST_PLUGINS_BUILD_DIR}
60 fi 159 fi
61
62} 160}
63 161
64### 162# @FUNCTION: gst-plugins10_system_link
65# public functions 163# @USAGE: gst-plugins10_system_link gst-libs/gst/audio:gstreamer-audio [...]
66### 164# @DESCRIPTION:
165# Walks through makefiles in order to make sure build will link against system
166# librairies.
167# Takes a list of path fragments and corresponding pkgconfig libraries
168# separated by colon (:). Will replace the path fragment by the output of
169# pkgconfig.
170gst-plugins10_system_link() {
171 local directory libs pkgconfig pc tuple
172 pkgconfig=$(tc-getPKG_CONFIG)
67 173
174 gst-plugins10_find_plugin_dir
175
176 for tuple in $@ ; do
177 directory="$(echo ${tuple} | cut -f1 -d':')"
178 pc="$(echo ${tuple} | cut -f2 -d':')-${SLOT}"
179 libs="$(${pkgconfig} --libs-only-l ${pc})"
180
181 sed -e "s:\$(top_builddir)/${directory}/.*\.la:${libs}:" \
182 -i Makefile.am Makefile.in || die
183 done
184}
185
186# @FUNCTION: gst-plugins10_remove_unversioned_binaries
187# @INTERNAL
188# @DESCRIPTION:
189# Remove the unversioned binaries gstreamer provides to prevent file collision
190# with other slots. DEPRECATED
68gst-plugins10_remove_unversioned_binaries() { 191gst-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 192 cd "${D}"/usr/bin
74 for gst_bins in `ls *-${PV_MAJ_MIN}` 193 local gst_bins
75 do 194 for gst_bins in *-${SLOT} ; do
195 [[ -e ${gst_bins} ]] || continue
76 rm ${gst_bins/-${PV_MAJ_MIN}/} 196 rm ${gst_bins/-${SLOT}/}
77 einfo "Removed ${gst_bins/-${PV_MAJ_MIN}/}" 197 einfo "Removed ${gst_bins/-${SLOT}/}"
78 done 198 done
79
80} 199}
81 200
201# @FUNCTION: gst-plugins10_src_configure
202# @DESCRIPTION:
203# Handles logic common to configuring gstreamer plugins
204gst-plugins10_src_configure() {
205 local plugin gst_conf
206
207 if has ${EAPI:-0} 0 1 2 3 ; then
208 gst_conf="${gst_conf} --disable-dependency-tracking"
209 fi
210
211 if has ${EAPI:-0} 0 1 2 3 4 ; then
212 gst_conf="${gst_conf} --disable-silent-rules"
213 fi
214
215 gst-plugins10_get_plugins
216
217 for plugin in ${GST_PLUGINS_LIST} ; do
218 if has ${plugin} ${GST_PLUGINS_BUILD} ; then
219 gst_conf="${gst_conf} --enable-${plugin}"
220 else
221 gst_conf="${gst_conf} --disable-${plugin}"
222 fi
223 done
224
225 if grep -q "ORC_CHECK" configure.* ; then
226 if in_iuse orc ; then
227 gst_conf="${gst_conf} $(use_enable orc)"
228 else
229 gst_conf="${gst_conf} --disable-orc"
230 fi
231 fi
232
233 if grep -q "AM_MAINTAINER_MODE" configure.* ; then
234 gst_conf="${gst_conf} --disable-maintainer-mode"
235 fi
236
237 if grep -q "disable-schemas-compile" configure ; then
238 gst_conf="${gst_conf} --disable-schemas-compile"
239 fi
240
241 if [[ ${PN} == ${GST_ORG_MODULE} ]]; then
242 gst_conf="${gst_conf} $(use_enable nls)"
243 fi
244
245 einfo "Configuring to build ${GST_PLUGINS_BUILD} plugin(s) ..."
246 econf \
247 --with-package-name="Gentoo GStreamer ebuild" \
248 --with-package-origin="http://www.gentoo.org" \
249 ${gst_conf} $@
250}
251
252# @FUNCTION: gst-plugins10_src_compile
253# @DESCRIPTION:
254# Compiles requested gstreamer plugin.
255gst-plugins10_src_compile() {
256 has ${EAPI:-0} 0 1 && gst-plugins10_src_configure "$@"
257
258 gst-plugins10_find_plugin_dir
259
260 if has "${EAPI:-0}" 0 1 2 3 ; then
261 emake || die
262 else
263 default
264 fi
265}
266
267# @FUNCTION: gst-plugins10_src_install
268# @DESCRIPTION:
269# Installs requested gstreamer plugin.
270gst-plugins10_src_install() {
271 gst-plugins10_find_plugin_dir
272
273 if has "${EAPI:-0}" 0 1 2 3 ; then
274 emake install DESTDIR="${D}" || die
275 [[ -e README ]] && dodoc README
276 else
277 default
278 fi
279
280 [[ ${GST_LA_PUNT} = "yes" ]] && prune_libtool_files --modules
281}
282

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.9

  ViewVC Help
Powered by ViewVC 1.1.20