From 56bd759df1d0c750a065b8c845e93d5dfa6b549d Mon Sep 17 00:00:00 2001 From: "Robin H. Johnson" Date: Sat, 8 Aug 2015 13:49:04 -0700 Subject: proj/gentoo: Initial commit MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 X-Thanks: Alec Warner - did the GSoC 2006 migration tests X-Thanks: Robin H. Johnson - infra guy, herding this project X-Thanks: Nguyen Thai Ngoc Duy - Former Gentoo developer, wrote Git features for the migration X-Thanks: Brian Harring - wrote much python to improve cvs2svn X-Thanks: Rich Freeman - validation scripts X-Thanks: Patrick Lauer - Gentoo dev, running new 2014 work in migration X-Thanks: Michał Górny - scripts, QA, nagging X-Thanks: All of other Gentoo developers - many ideas and lots of paint on the bikeshed --- eclass/gst-plugins10.eclass | 299 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 299 insertions(+) create mode 100644 eclass/gst-plugins10.eclass (limited to 'eclass/gst-plugins10.eclass') 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 +# Saleem Abdulrasool +# foser +# zaheerm +# @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 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 [] +# @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 +} + -- cgit v1.2.3-65-gdbad