From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) by finch.gentoo.org (Postfix) with ESMTP id 53F5A1387FD for ; Tue, 10 Jun 2014 18:37:41 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 4FE05E07EA; Tue, 10 Jun 2014 18:37:39 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id C2D19E07EA for ; Tue, 10 Jun 2014 18:37:38 +0000 (UTC) Received: from flycatcher.gentoo.org (flycatcher.gentoo.org [81.93.255.6]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 916C133FE67 for ; Tue, 10 Jun 2014 18:37:37 +0000 (UTC) Received: by flycatcher.gentoo.org (Postfix, from userid 2279) id 9A8022004E; Tue, 10 Jun 2014 18:37:35 +0000 (UTC) From: "Michal Gorny (mgorny)" To: gentoo-commits@lists.gentoo.org Reply-To: gentoo-dev@lists.gentoo.org, mgorny@gentoo.org Subject: [gentoo-commits] gentoo-x86 commit in eclass: ChangeLog gstreamer.eclass X-VCS-Repository: gentoo-x86 X-VCS-Files: ChangeLog gstreamer.eclass X-VCS-Directories: eclass X-VCS-Committer: mgorny X-VCS-Committer-Name: Michal Gorny Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Message-Id: <20140610183735.9A8022004E@flycatcher.gentoo.org> Date: Tue, 10 Jun 2014 18:37:35 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Archives-Salt: 291ac01e-f374-45dc-bba0-5f542a8aa415 X-Archives-Hash: aed68d9c6bf9203d967af3fa6035d18d mgorny 14/06/10 18:37:35 Modified: ChangeLog Added: gstreamer.eclass Log: Add new, multilib-capable eclass for gstreamer plugins. Revision Changes Path 1.1284 eclass/ChangeLog file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/eclass/ChangeLog?rev=1.1284&view=markup plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/eclass/ChangeLog?rev=1.1284&content-type=text/plain diff : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/eclass/ChangeLog?r1=1.1283&r2=1.1284 Index: ChangeLog =================================================================== RCS file: /var/cvsroot/gentoo-x86/eclass/ChangeLog,v retrieving revision 1.1283 retrieving revision 1.1284 diff -u -r1.1283 -r1.1284 --- ChangeLog 8 Jun 2014 13:57:02 -0000 1.1283 +++ ChangeLog 10 Jun 2014 18:37:35 -0000 1.1284 @@ -1,6 +1,9 @@ # ChangeLog for eclass directory # Copyright 1999-2014 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/eclass/ChangeLog,v 1.1283 2014/06/08 13:57:02 mgorny Exp $ +# $Header: /var/cvsroot/gentoo-x86/eclass/ChangeLog,v 1.1284 2014/06/10 18:37:35 mgorny Exp $ + + 10 Jun 2014; Michał Górny +gstreamer.eclass: + Add new, multilib-capable eclass for gstreamer plugins. 08 Jun 2014; Michał Górny multilib-build.eclass: Work around lack of arch defines in swig, bug #509792. 1.1 eclass/gstreamer.eclass file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/eclass/gstreamer.eclass?rev=1.1&view=markup plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/eclass/gstreamer.eclass?rev=1.1&content-type=text/plain Index: gstreamer.eclass =================================================================== # Copyright 1999-2014 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: /var/cvsroot/gentoo-x86/eclass/gstreamer.eclass,v 1.1 2014/06/10 18:37:35 mgorny Exp $ # @ECLASS: gstreamer.eclass # @MAINTAINER: # gstreamer@gentoo.org # @AUTHOR: # Michał Górny # Gilles Dartiguelongue # Saleem Abdulrasool # foser # zaheerm # @BLURB: Helps building core & split gstreamer 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 dependencies. # # GStreamer consuming applications should depend on the specific plugins # they need as defined in their source code. Usually you can find that # out by grepping the source tree for 'factory_make'. If it uses playbin # plugin, consider adding media-plugins/gst-plugins-meta dependency, but # also list any packages that provide explicitly requested plugins. inherit eutils multilib multilib-minimal toolchain-funcs versionator case "${EAPI:-0}" in 5) ;; 0|1|2|3|4) die "EAPI=\"${EAPI:-0}\" is not supported anymore" ;; *) die "EAPI=\"${EAPI}\" is not supported yet" ;; esac # @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 xz. This is # because the gstreamer mirrors are moving to only have xz tarballs for # new releases. : ${GST_TARBALL_SUFFIX:="xz"} # 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[${MULTILIB_USEDEP}] media-libs/gstreamer:${SLOT}[${MULTILIB_USEDEP}] " DEPEND=" >=sys-apps/sed-4 virtual/pkgconfig[${MULTILIB_USEDEP}] " # Export common multilib phases. multilib_src_configure() { gstreamer_multilib_src_configure; } 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}[${MULTILIB_USEDEP}]" # Export multilib phases used for split builds. multilib_src_compile() { gstreamer_multilib_src_compile; } multilib_src_install() { gstreamer_multilib_src_install; } multilib_src_install_all() { gstreamer_multilib_src_install_all; } else IUSE="nls" DEPEND="${DEPEND} nls? ( >=sys-devel/gettext-0.17 )" fi if [[ ${SLOT} == "0.10" ]]; then RDEPEND="${RDEPEND} abi_x86_32? ( !app-emulation/emul-linux-x86-gstplugins[-abi_x86_32(-)] )" fi DEPEND="${DEPEND} ${RDEPEND}" # @FUNCTION: gstreamer_get_plugins # @INTERNAL # @DESCRIPTION: # Get the list of plugins requiring external dependencies. gstreamer_get_plugins() { # Must be called from src_prepare/src_configure GST_PLUGINS_LIST=$(sed -rn 's/^AG_GST_CHECK_FEATURE\((\w+),.*/ \1 /p' \ "${ECONF_SOURCE:-${S}}"/configure.* | LC_ALL='C' tr '[:upper:]' '[:lower:]') } # @FUNCTION: gstreamer_get_plugin_dir # @USAGE: gstreamer_get_plugin_dir [] # @INTERNAL # @DESCRIPTION: # Finds plugin build directory and output it. # Defaults to ${GST_PLUGINS_BUILD_DIR} if argument is not provided gstreamer_get_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}..." >&2 echo sys/${build_dir} else einfo "Building external plugin in ${build_dir}..." >&2 echo ext/${build_dir} fi } # @FUNCTION: gstreamer_system_link # @USAGE: gstreamer_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. gstreamer_system_link() { local pdir directory libs pkgconfig pc tuple pkgconfig=$(tc-getPKG_CONFIG) for plugin_dir in ${GST_PLUGINS_BUILD_DIR} ; do pdir=$(gstreamer_get_plugin_dir ${plugin_dir}) for tuple in $@ ; do directory=${tuple%:*} pc=${tuple#*:}-${SLOT} libs="$(${pkgconfig} --libs-only-l ${pc} || die)" sed -e "s:\$(top_builddir)/${directory}/.*\.la:${libs}:" \ -i "${pdir}"/Makefile.{am,in} || die done done } # @FUNCTION: gstreamer_multilib_src_configure # @DESCRIPTION: # Handles logic common to configuring gstreamer plugins gstreamer_multilib_src_configure() { local plugin gst_conf=() ECONF_SOURCE=${ECONF_SOURCE:-${S}} gstreamer_get_plugins for plugin in ${GST_PLUGINS_LIST} ; do if has ${plugin} ${GST_PLUGINS_BUILD} ; then gst_conf+=( --enable-${plugin} ) else gst_conf+=( --disable-${plugin} ) fi done if grep -q "ORC_CHECK" "${ECONF_SOURCE}"/configure.* ; then if in_iuse orc ; then gst_conf+=( $(use_enable orc) ) else gst_conf+=( --disable-orc ) fi fi if grep -q "AM_MAINTAINER_MODE" "${ECONF_SOURCE}"/configure.* ; then gst_conf+=( --disable-maintainer-mode ) fi if grep -q "disable-schemas-compile" "${ECONF_SOURCE}"/configure ; then gst_conf+=( --disable-schemas-compile ) fi if [[ ${PN} == ${GST_ORG_MODULE} ]]; then 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: gstreamer_multilib_src_compile # @DESCRIPTION: # Compiles requested gstreamer plugin. gstreamer_multilib_src_compile() { local plugin_dir for plugin_dir in ${GST_PLUGINS_BUILD_DIR} ; do emake -C "$(gstreamer_get_plugin_dir ${plugin_dir})" done } # @FUNCTION: gstreamer_multilib_src_install # @DESCRIPTION: # Installs requested gstreamer plugin. gstreamer_multilib_src_install() { local plugin_dir for plugin_dir in ${GST_PLUGINS_BUILD_DIR} ; do emake -C "$(gstreamer_get_plugin_dir ${plugin_dir})" \ DESTDIR="${D}" install done } # @FUNCTION: gstreamer_multilib_src_install_all # @DESCRIPTION: # Installs documentation for requested gstreamer plugin, and removes .la # files. gstreamer_multilib_src_install_all() { local plugin_dir for plugin_dir in ${GST_PLUGINS_BUILD_DIR} ; do local dir=$(gstreamer_get_plugin_dir ${plugin_dir}) [[ -e ${dir}/README ]] && dodoc "${dir}"/README done prune_libtool_files --modules }