diff options
author | Robin H. Johnson <robbat2@gentoo.org> | 2015-08-08 13:49:04 -0700 |
---|---|---|
committer | Robin H. Johnson <robbat2@gentoo.org> | 2015-08-08 17:38:18 -0700 |
commit | 56bd759df1d0c750a065b8c845e93d5dfa6b549d (patch) | |
tree | 3f91093cdb475e565ae857f1c5a7fd339e2d781e /eclass/gst-plugins10.eclass | |
download | gentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.tar.gz gentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.tar.bz2 gentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.zip |
proj/gentoo: Initial commit
This commit represents a new era for Gentoo:
Storing the gentoo-x86 tree in Git, as converted from CVS.
This commit is the start of the NEW history.
Any historical data is intended to be grafted onto this point.
Creation process:
1. Take final CVS checkout snapshot
2. Remove ALL ChangeLog* files
3. Transform all Manifests to thin
4. Remove empty Manifests
5. Convert all stale $Header$/$Id$ CVS keywords to non-expanded Git $Id$
5.1. Do not touch files with -kb/-ko keyword flags.
Signed-off-by: Robin H. Johnson <robbat2@gentoo.org>
X-Thanks: Alec Warner <antarus@gentoo.org> - did the GSoC 2006 migration tests
X-Thanks: Robin H. Johnson <robbat2@gentoo.org> - infra guy, herding this project
X-Thanks: Nguyen Thai Ngoc Duy <pclouds@gentoo.org> - Former Gentoo developer, wrote Git features for the migration
X-Thanks: Brian Harring <ferringb@gentoo.org> - wrote much python to improve cvs2svn
X-Thanks: Rich Freeman <rich0@gentoo.org> - validation scripts
X-Thanks: Patrick Lauer <patrick@gentoo.org> - Gentoo dev, running new 2014 work in migration
X-Thanks: Michał Górny <mgorny@gentoo.org> - scripts, QA, nagging
X-Thanks: All of other Gentoo developers - many ideas and lots of paint on the bikeshed
Diffstat (limited to 'eclass/gst-plugins10.eclass')
-rw-r--r-- | eclass/gst-plugins10.eclass | 299 |
1 files changed, 299 insertions, 0 deletions
diff --git a/eclass/gst-plugins10.eclass b/eclass/gst-plugins10.eclass new file mode 100644 index 000000000000..0a6b0db79b0c --- /dev/null +++ b/eclass/gst-plugins10.eclass @@ -0,0 +1,299 @@ +# Copyright 1999-2014 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +# @ECLASS: gst-plugins10.eclass +# @MAINTAINER: +# gstreamer@gentoo.org +# @AUTHOR: +# Gilles Dartiguelongue <eva@gentoo.org> +# Saleem Abdulrasool <compnerd@gentoo.org> +# foser <foser@gentoo.org> +# zaheerm <zaheerm@gentoo.org> +# @BLURB: Manages build for invididual ebuild for gst-plugins. +# @DESCRIPTION: +# Eclass to make external gst-plugins emergable on a per-plugin basis and +# to solve the problem with gst-plugins generating far too much unneeded +# dependancies. +# +# GStreamer consuming applications should depend on the specific plugins they +# need as defined in their source code. +# +# In case of spider usage, obtain recommended plugins to use from Gentoo +# developers responsible for gstreamer <gstreamer@gentoo.org> or the application +# developer. + +inherit eutils multilib toolchain-funcs versionator + +GST_EXPF="" +case "${EAPI:-0}" in + 2|3|4|5) + GST_EXPF="src_configure src_compile src_install" + ;; + 1) + GST_EXPF="src_compile src_install" + ;; + 0) + die "EAPI=\"${EAPI:-0}\" is not supported anymore" + ;; + *) + die "EAPI=\"${EAPI}\" is not supported yet" + ;; +esac +EXPORT_FUNCTIONS ${GST_EXPF} + +# @ECLASS-VARIABLE: GST_LA_PUNT +# @DESCRIPTION: +# Should we delete all the .la files? +# NOT to be used without due consideration. +# Defaults to no for EAPI < 5. +if has "${EAPI:-0}" 0 1 2 3; then + : ${GST_LA_PUNT:="no"} +else + : ${GST_LA_PUNT:="yes"} +fi + +# @ECLASS-VARIABLE: GST_PLUGINS_BUILD +# @DESCRIPTION: +# Defines the plugins to be built. +# May be set by an ebuild and contain more than one indentifier, space +# seperated (only src_configure can handle mutiple plugins at this time). +: ${GST_PLUGINS_BUILD:=${PN/gst-plugins-/}} + +# @ECLASS-VARIABLE: GST_PLUGINS_BUILD_DIR +# @DESCRIPTION: +# Actual build directory of the plugin. +# Most often the same as the configure switch name. +: ${GST_PLUGINS_BUILD_DIR:=${PN/gst-plugins-/}} + +# @ECLASS-VARIABLE: GST_TARBALL_SUFFIX +# @DESCRIPTION: +# Most projects hosted on gstreamer.freedesktop.org mirrors provide tarballs as +# tar.bz2 or tar.xz. This eclass defaults to bz2 for EAPI 0, 1, 2, 3 and +# defaults to xz for everything else. This is because the gstreamer mirrors +# are moving to only have xz tarballs for new releases. +if has "${EAPI:-0}" 0 1 2 3; then + : ${GST_TARBALL_SUFFIX:="bz2"} +else + : ${GST_TARBALL_SUFFIX:="xz"} +fi + +# Even though xz-utils are in @system, they must still be added to DEPEND; see +# http://archives.gentoo.org/gentoo-dev/msg_a0d4833eb314d1be5d5802a3b710e0a4.xml +if [[ ${GST_TARBALL_SUFFIX} == "xz" ]]; then + DEPEND="${DEPEND} app-arch/xz-utils" +fi + +# @ECLASS-VARIABLE: GST_ORG_MODULE +# @DESCRIPTION: +# Name of the module as hosted on gstreamer.freedesktop.org mirrors. +# Leave unset if package name matches module name. +: ${GST_ORG_MODULE:=$PN} + +# @ECLASS-VARIABLE: GST_ORG_PVP +# @INTERNAL +# @DESCRIPTION: +# Major and minor numbers of the version number. +: ${GST_ORG_PVP:=$(get_version_component_range 1-2)} + + +DESCRIPTION="${BUILD_GST_PLUGINS} plugin for gstreamer" +HOMEPAGE="http://gstreamer.freedesktop.org/" +SRC_URI="http://gstreamer.freedesktop.org/src/${GST_ORG_MODULE}/${GST_ORG_MODULE}-${PV}.tar.${GST_TARBALL_SUFFIX}" + +LICENSE="GPL-2" +case ${GST_ORG_PVP} in + 0.10) SLOT="0.10" ;; + 1.*) SLOT="1.0" ;; + *) die "Unkown gstreamer release." +esac + +S="${WORKDIR}/${GST_ORG_MODULE}-${PV}" + +RDEPEND=" + >=dev-libs/glib-2.6:2 + media-libs/gstreamer:${SLOT} +" +DEPEND=" + >=sys-apps/sed-4 + virtual/pkgconfig +" + +if [[ ${PN} != ${GST_ORG_MODULE} ]]; then + # Do not run test phase for invididual plugin ebuilds. + RESTRICT="test" + RDEPEND="${RDEPEND} >=media-libs/${GST_ORG_MODULE}-${PV}:${SLOT}" +else + IUSE="nls" + DEPEND="${DEPEND} nls? ( >=sys-devel/gettext-0.17 )" +fi + +#if [[ ${SLOT} == "0.10" ]]; then +# XXX: verify with old ebuilds. +# DEPEND="${DEPEND} dev-libs/liboil" +#fi + +DEPEND="${DEPEND} ${RDEPEND}" + +# @FUNCTION: gst-plugins10_get_plugins +# @INTERNAL +# @DESCRIPTION: +# Get the list of plugins requiring external dependencies. +gst-plugins10_get_plugins() { + # Must be called from src_prepare/src_configure + GST_PLUGINS_LIST=$(sed -rn 's/^AG_GST_CHECK_FEATURE\((\w+),.*/ \1 /p' \ + "${S}"/configure.* | LC_ALL='C' tr '[:upper:]' '[:lower:]') +} + +# @FUNCTION: gst-plugins10_find_plugin_dir +# @USAGE: gst-plugins10_find_plugin_dir [<build_dir>] +# @INTERNAL +# @DESCRIPTION: +# Finds plugin build directory and cd to it. +# Defaults to ${GST_PLUGINS_BUILD_DIR} if argument is not provided +gst-plugins10_find_plugin_dir() { + local build_dir=${1:-${GST_PLUGINS_BUILD_DIR}} + + if [[ ! -d ${S}/ext/${build_dir} ]]; then + if [[ ! -d ${S}/sys/${build_dir} ]]; then + ewarn "No such plugin directory" + die + fi + einfo "Building system plugin in ${build_dir}..." + cd "${S}"/sys/${build_dir} + else + einfo "Building external plugin in ${build_dir}..." + cd "${S}"/ext/${build_dir} + fi +} + +# @FUNCTION: gst-plugins10_system_link +# @USAGE: gst-plugins10_system_link gst-libs/gst/audio:gstreamer-audio [...] +# @DESCRIPTION: +# Walks through makefiles in order to make sure build will link against system +# librairies. +# Takes a list of path fragments and corresponding pkgconfig libraries +# separated by colon (:). Will replace the path fragment by the output of +# pkgconfig. +gst-plugins10_system_link() { + local directory libs pkgconfig pc tuple + pkgconfig=$(tc-getPKG_CONFIG) + + for plugin_dir in ${GST_PLUGINS_BUILD_DIR} ; do + gst-plugins10_find_plugin_dir ${plugin_dir} + + for tuple in $@ ; do + directory="$(echo ${tuple} | cut -f1 -d':')" + pc="$(echo ${tuple} | cut -f2 -d':')-${SLOT}" + libs="$(${pkgconfig} --libs-only-l ${pc})" + sed -e "s:\$(top_builddir)/${directory}/.*\.la:${libs}:" \ + -i Makefile.am Makefile.in || die + done + done +} + +# @FUNCTION: gst-plugins10_remove_unversioned_binaries +# @INTERNAL +# @DESCRIPTION: +# Remove the unversioned binaries gstreamer provides to prevent file collision +# with other slots. DEPRECATED +gst-plugins10_remove_unversioned_binaries() { + cd "${D}"/usr/bin + local gst_bins + for gst_bins in *-${SLOT} ; do + [[ -e ${gst_bins} ]] || continue + rm ${gst_bins/-${SLOT}/} + einfo "Removed ${gst_bins/-${SLOT}/}" + done +} + +# @FUNCTION: gst-plugins10_src_configure +# @DESCRIPTION: +# Handles logic common to configuring gstreamer plugins +gst-plugins10_src_configure() { + local plugin gst_conf + + if has ${EAPI:-0} 0 1 2 3 ; then + gst_conf="${gst_conf} --disable-dependency-tracking" + fi + + if has ${EAPI:-0} 0 1 2 3 4 ; then + gst_conf="${gst_conf} --disable-silent-rules" + fi + + gst-plugins10_get_plugins + + for plugin in ${GST_PLUGINS_LIST} ; do + if has ${plugin} ${GST_PLUGINS_BUILD} ; then + gst_conf="${gst_conf} --enable-${plugin}" + else + gst_conf="${gst_conf} --disable-${plugin}" + fi + done + + if grep -q "ORC_CHECK" configure.* ; then + if in_iuse orc ; then + gst_conf="${gst_conf} $(use_enable orc)" + else + gst_conf="${gst_conf} --disable-orc" + fi + fi + + if grep -q "AM_MAINTAINER_MODE" configure.* ; then + gst_conf="${gst_conf} --disable-maintainer-mode" + fi + + if grep -q "disable-schemas-compile" configure ; then + gst_conf="${gst_conf} --disable-schemas-compile" + fi + + if [[ ${PN} == ${GST_ORG_MODULE} ]]; then + gst_conf="${gst_conf} $(use_enable nls)" + fi + + einfo "Configuring to build ${GST_PLUGINS_BUILD} plugin(s) ..." + econf \ + --with-package-name="Gentoo GStreamer ebuild" \ + --with-package-origin="http://www.gentoo.org" \ + ${gst_conf} $@ +} + +# @FUNCTION: gst-plugins10_src_compile +# @DESCRIPTION: +# Compiles requested gstreamer plugin. +gst-plugins10_src_compile() { + local plugin_dir + + has ${EAPI:-0} 0 1 && gst-plugins10_src_configure "$@" + + for plugin_dir in ${GST_PLUGINS_BUILD_DIR} ; do + gst-plugins10_find_plugin_dir ${plugin_dir} + + if has "${EAPI:-0}" 0 1 2 3 ; then + emake || die + else + default + fi + done +} + +# @FUNCTION: gst-plugins10_src_install +# @DESCRIPTION: +# Installs requested gstreamer plugin. +gst-plugins10_src_install() { + local plugin_dir + + for plugin_dir in ${GST_PLUGINS_BUILD_DIR} ; do + gst-plugins10_find_plugin_dir ${plugin_dir} + + if has "${EAPI:-0}" 0 1 2 3 ; then + emake install DESTDIR="${D}" || die + [[ -e README ]] && dodoc README + else + default + fi + done + + [[ ${GST_LA_PUNT} = "yes" ]] && prune_libtool_files --modules +} + |