/[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.2 Revision 1.8
1# Copyright 1999-2004 Gentoo Foundation 1# Copyright 1999-2012 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.2 2006/01/01 01:14:59 swegener Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/gst-plugins10.eclass,v 1.8 2012/12/02 17:16:20 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.
49if has "${EAPI:-0}" 0 1 2 3; then
50 : ${GST_LA_PUNT:="no"}
51else
52 : ${GST_LA_PUNT:="yes"}
53fi
23 54
24# Create a major/minor combo for our SLOT and executables suffix 55# @ECLASS-VARIABLE: GST_PLUGINS_BUILD
25PVP=(${PV//[-\._]/ }) 56# @DESCRIPTION:
26#PV_MAJ_MIN=${PVP[0]}.${PVP[1]} 57# 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 58# May be set by an ebuild and contain more than one indentifier, space
31# (only src_configure can handle mutiple plugins at this time) 59# seperated (only src_configure can handle mutiple plugins at this time).
32GST_PLUGINS_BUILD=${PN/gst-plugins-/} 60GST_PLUGINS_BUILD=${PN/gst-plugins-/}
33 61
34# Actual build dir, is the same as the configure switch name most of the time 62# @ECLASS-VARIABLE: GST_PLUGINS_BUILD_DIR
63# @DESCRIPTION:
64# Actual build directory of the plugin.
65# Most often the same as the configure switch name.
35GST_PLUGINS_BUILD_DIR=${PN/gst-plugins-/} 66GST_PLUGINS_BUILD_DIR=${PN/gst-plugins-/}
36 67
37# general common gst-plugins ebuild entries 68# @ECLASS-VARIABLE: GST_TARBALL_SUFFIX
69# @DESCRIPTION:
70# Most projects hosted on gstreamer.freedesktop.org mirrors provide tarballs as
71# tar.bz2 or tar.xz. This eclass defaults to bz2 for EAPI 0, 1, 2, 3 and
72# defaults to xz for everything else. This is because the gstreamer mirrors
73# are moving to only have xz tarballs for new releases.
74if has "${EAPI:-0}" 0 1 2 3; then
75 : ${GST_TARBALL_SUFFIX:="bz2"}
76else
77 : ${GST_TARBALL_SUFFIX:="xz"}
78fi
79
80# Even though xz-utils are in @system, they must still be added to DEPEND; see
81# http://archives.gentoo.org/gentoo-dev/msg_a0d4833eb314d1be5d5802a3b710e0a4.xml
82if [[ ${GST_TARBALL_SUFFIX} == "xz" ]]; then
83 DEPEND="${DEPEND} app-arch/xz-utils"
84fi
85
86# @ECLASS-VARIABLE: GST_ORG_MODULE
87# @DESCRIPTION:
88# Name of the module as hosted on gstreamer.freedesktop.org mirrors.
89# Leave unset if package name matches module name.
90: ${GST_ORG_MODULE:=$PN}
91
92# @ECLASS-VARIABLE: GST_ORG_PVP
93# @INTERNAL
94# @DESCRIPTION:
95# Major and minor numbers of the version number.
96: ${GST_ORG_PVP:=$(get_version_component_range 1-2)}
97
98
38DESCRIPTION="${BUILD_GST_PLUGINS} plugin for gstreamer" 99DESCRIPTION="${BUILD_GST_PLUGINS} plugin for gstreamer"
39HOMEPAGE="http://gstreamer.freedesktop.org/" 100HOMEPAGE="http://gstreamer.freedesktop.org/"
101SRC_URI="http://gstreamer.freedesktop.org/src/${GST_ORG_MODULE}/${GST_ORG_MODULE}-${PV}.tar.${GST_TARBALL_SUFFIX}"
102
40LICENSE="GPL-2" 103LICENSE="GPL-2"
104SLOT="${GST_ORG_PVP}"
41 105
42#SRC_URI="mirror://gnome/sources/gst-plugins/${PV_MAJ_MIN}/${MY_P}.tar.bz2" 106S="${WORKDIR}/${GST_ORG_MODULE}-${PV}"
43SLOT=${PV_MAJ_MIN}
44###
45# internal functions
46###
47 107
108RDEPEND="
109 >=dev-libs/glib-2.6:2
110 media-libs/gstreamer:${SLOT}
111"
112DEPEND="
113 >=sys-apps/sed-4
114 virtual/pkgconfig
115"
116
117if [[ ${PN} != ${GST_ORG_MODULE} ]]; then
118 # Do not run test phase for invididual plugin ebuilds.
119 RESTRICT="test"
120 RDEPEND="${RDEPEND} >=media-libs/${GST_ORG_MODULE}-${PV}:${SLOT}"
121else
122 IUSE="nls"
123 DEPEND="${DEPEND} nls? ( >=sys-devel/gettext-0.17 )"
124fi
125
126#if [[ ${SLOT} == "0.10" ]]; then
127# XXX: verify with old ebuilds.
128# DEPEND="${DEPEND} dev-libs/liboil"
129#fi
130
131DEPEND="${DEPEND} ${RDEPEND}"
132
133# @FUNCTION: gst-plugins10_get_plugins
134# @INTERNAL
135# @DESCRIPTION:
136# Get the list of plugins requiring external dependencies.
137gst-plugins10_get_plugins() {
138 # Must be called from src_prepare/src_configure
139 GST_PLUGINS_LIST=$(sed -rn 's/^AG_GST_CHECK_FEATURE\((\w+),.*/ \1 /p' \
140 "${S}"/configure.* | tr '[:upper:]' '[:lower:]')
141}
142
143# @FUNCTION: gst-plugins10_find_plugin_dir
144# @INTERNAL
145# @DESCRIPTION:
146# Finds plugin build directory and cd to it.
48gst-plugins10_find_plugin_dir() { 147gst-plugins10_find_plugin_dir() {
49
50 if [ ! -d ${S}/ext/${GST_PLUGINS_BUILD_DIR} ]; then 148 if [[ ! -d ${S}/ext/${GST_PLUGINS_BUILD_DIR} ]]; then
51 if [ ! -d ${S}/sys/${GST_PLUGINS_BUILD_DIR} ]; then 149 if [[ ! -d ${S}/sys/${GST_PLUGINS_BUILD_DIR} ]]; then
52 ewarn "No such plugin directory" 150 ewarn "No such plugin directory"
53 die 151 die
54 fi 152 fi
55 einfo "Building system plugin ..." 153 einfo "Building system plugin ${GST_PLUGINS_BUILD_DIR} ..."
56 cd ${S}/sys/${GST_PLUGINS_BUILD_DIR} 154 cd "${S}"/sys/${GST_PLUGINS_BUILD_DIR}
57 else 155 else
58 einfo "Building external plugin ..." 156 einfo "Building external plugin ${GST_PLUGINS_BUILD_DIR} ..."
59 cd ${S}/ext/${GST_PLUGINS_BUILD_DIR} 157 cd "${S}"/ext/${GST_PLUGINS_BUILD_DIR}
60 fi 158 fi
61
62} 159}
63 160
64### 161# @FUNCTION: gst-plugins10_system_link
65# public functions 162# @USAGE: gst-plugins10_system_link gst-libs/gst/audio:gstreamer-audio [...]
66### 163# @DESCRIPTION:
164# Walks through makefiles in order to make sure build will link against system
165# librairies.
166# Takes a list of path fragments and corresponding pkgconfig libraries
167# separated by colon (:). Will replace the path fragment by the output of
168# pkgconfig.
169gst-plugins10_system_link() {
170 local directory libs pkgconfig pc tuple
171 pkgconfig=$(tc-getPKG_CONFIG)
67 172
173 gst-plugins10_find_plugin_dir
174
175 for tuple in $@ ; do
176 directory="$(echo ${tuple} | cut -f1 -d':')"
177 pc="$(echo ${tuple} | cut -f2 -d':')-${SLOT}"
178 libs="$(${pkgconfig} --libs-only-l ${pc})"
179
180 sed -e "s:\$(top_builddir)/${directory}/.*\.la:${libs}:" \
181 -i Makefile.am Makefile.in || die
182 done
183}
184
185# @FUNCTION: gst-plugins10_remove_unversioned_binaries
186# @INTERNAL
187# @DEPRECATED
188# @DESCRIPTION:
189# Remove the unversioned binaries gstreamer provides to prevent file collision
190# with other slots.
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
202gst-plugins10_src_configure() {
203 local plugin gst_conf
204
205 if has ${EAPI:-0} 0 1 2 3 ; then
206 gst_conf="${gst_conf} --disable-dependency-tracking"
207 fi
208
209 if has ${EAPI:-0} 0 1 2 3 4 ; then
210 gst_conf="${gst_conf} --disable-silent-rules"
211 fi
212
213 gst-plugins10_get_plugins
214
215 for plugin in ${GST_PLUGINS_LIST} ; do
216 if has ${plugin} ${GST_PLUGINS_BUILD} ; then
217 gst_conf="${gst_conf} --enable-${plugin}"
218 else
219 gst_conf="${gst_conf} --disable-${plugin}"
220 fi
221 done
222
223 if grep -q "ORC_CHECK" configure.* ; then
224 if in_iuse orc ; then
225 gst_conf="${gst_conf} $(use_enable orc)"
226 else
227 gst_conf="${gst_conf} --disable-orc"
228 fi
229 fi
230
231 if grep -q "AM_MAINTAINER_MODE" configure.* ; then
232 gst_conf="${gst_conf} --disable-maintainer-mode"
233 fi
234
235 if grep -q "disable-schemas-compile" configure ; then
236 gst_conf="${gst_conf} --disable-schemas-compile"
237 fi
238
239 if [[ ${PN} == ${GST_ORG_MODULE} ]]; then
240 gst_conf="${gst_conf} $(use_enable nls)"
241 fi
242
243 einfo "Configuring to build ${GST_PLUGINS_BUILD} plugin(s) ..."
244 econf \
245 --with-package-name="Gentoo GStreamer ebuild" \
246 --with-package-origin="http://www.gentoo.org" \
247 ${gst_conf} $@
248}
249
250# @FUNCTION: gst-plugins10_src_compile
251gst-plugins10_src_compile() {
252 has ${EAPI:-0} 0 1 && gst-plugins10_src_configure "$@"
253
254 gst-plugins10_find_plugin_dir
255
256 if has "${EAPI:-0}" 0 1 2 3 ; then
257 emake || die
258 else
259 default
260 fi
261}
262
263# @FUNCTION: gst-plugins10_src_install
264gst-plugins10_src_install() {
265 gst-plugins10_find_plugin_dir
266
267 if has "${EAPI:-0}" 0 1 2 3 ; then
268 emake install DESTDIR="${D}" || die
269 [[ -e README ]] && dodoc README
270 else
271 default
272 fi
273
274 [[ ${GST_LA_PUNT} = "yes" ]] && prune_libtool_files --modules
275}
276

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.8

  ViewVC Help
Powered by ViewVC 1.1.20