/[gentoo-x86]/eclass/vdr-plugin.eclass
Gentoo

Diff of /eclass/vdr-plugin.eclass

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 1.70 Revision 1.81
1# Copyright 1999-2005 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/Attic/vdr-plugin.eclass,v 1.70 2009/10/08 08:12:50 zzam Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/Attic/vdr-plugin.eclass,v 1.81 2012/02/15 18:41:24 hd_brummy Exp $
4
5# @ECLASS: vdr-plugin.eclass
6# @MAINTAINER:
7# vdr@gentoo.org
8# @BLURB: common vdr plugin ebuild functions
9# @DESCRIPTION:
10# Eclass for easing maitenance of vdr plugin ebuilds
11
12# Authors:
13# Matthias Schwarzott <zzam@gentoo.org>
14# Joerg Bornkessel <hd_brummy@gentoo.org>
15# Christian Ruppert <idl0r@gentoo.org>
16
17# Plugin config file installation:
4# 18#
5# Author: 19# A plugin config file can be specified through the $VDR_CONFD_FILE variable, it
6# Matthias Schwarzott <zzam@gentoo.org> 20# defaults to ${FILESDIR}/confd. Each config file will be installed as e.g.
7# Joerg Bornkessel <hd_brummy@gentoo.org> 21# ${D}/etc/conf.d/vdr.${VDRPLUGIN}
8 22
9# vdr-plugin.eclass 23# Installation of rc-addon files:
24# NOTE: rc-addon files must be valid shell scripts!
10# 25#
11# eclass to create ebuilds for vdr plugins 26# Installing rc-addon files is basically the same as for plugin config files
27# (see above), it's just using the $VDR_RCADDON_FILE variable instead.
28# The default value when $VDR_RCADDON_FILE is undefined is:
29# ${FILESDIR}/rc-addon.sh and will be installed as
30# ${VDR_RC_DIR}/plugin-${VDRPLUGIN}.sh
12# 31#
32# The rc-addon files will be sourced by the startscript when the specific plugin
33# has been enabled.
34# rc-addon files may be used to prepare everything that is necessary for the
35# plugin start/stop, like passing extra command line options and so on.
13 36
14# Example ebuild (basic version without patching): 37# Applying your own local/user patches:
38# This is done by using the epatch_user() function of the eutils.eclass.
39# Simply put your patches into one of these directories:
40# /etc/portage/patches/<CATEGORY>/<PF|P|PN>/
41# Quote: where the first of these three directories to exist will be the one to
42# use, ignoring any more general directories which might exist as well.
15# 43#
16# EAPI="2" 44# For more details about it please take a look at the eutils.class.
17# inherit vdr-plugin
18# IUSE=""
19# SLOT="0"
20# DESCRIPTION="vdr Plugin: DVB Frontend Status Monitor (signal strengt/noise)"
21# HOMEPAGE="http://www.saunalahti.fi/~rahrenbe/vdr/femon/"
22# SRC_URI="http://www.saunalahti.fi/~rahrenbe/vdr/femon/files/${P}.tgz"
23# LICENSE="GPL-2"
24# KEYWORDS="~x86"
25# DEPEND=">=media-video/vdr-1.6.0"
26#
27#
28
29# For patching you should modify src_prepare phase:
30#
31# src_prepare() {
32# epatch "${FILESDIR}"/${P}-xxx.patch
33# vdr-plugin_src_prepare
34# }
35
36# Installation of a config file for the plugin
37#
38# If ${VDR_CONFD_FILE} is set install this file
39# else install ${FILESDIR}/confd if it exists.
40
41# Gets installed as /etc/conf.d/vdr.${VDRPLUGIN}.
42# For the plugin vdr-femon this would be /etc/conf.d/vdr.femon
43
44
45# Installation of an rc-addon file for the plugin
46#
47# If ${VDR_RCADDON_FILE} is set install this file
48# else install ${FILESDIR}/rc-addon.sh if it exists.
49#
50# Gets installed under ${VDR_RC_DIR}/plugin-${VDRPLUGIN}.sh
51# (in example vdr-femon this would be /usr/share/vdr/rcscript/plugin-femon.sh)
52#
53# This file is sourced by the startscript when plugin is activated in /etc/conf.d/vdr
54# It could be used for special startup actions for this plugins, or to create the
55# plugin command line options from a nicer version of a conf.d file.
56
57# HowTo use own local patches; Example
58#
59# Add to your /etc/make.conf:
60# VDR_LOCAL_PATCHES_DIR="/usr/local/patch"
61#
62# Add two DIR's in your local patch dir, ${PN}/${PV},
63# e.g for vdr-burn-0.1.0 should be:
64# /usr/local/patch/vdr-burn/0.1.0/
65#
66# all patches which ending on diff or patch in this DIR will automatically applied
67#
68 45
69inherit base multilib eutils flag-o-matic 46inherit base multilib eutils flag-o-matic
47
48if ! has "${EAPI:-0}" 0 1 2 3 4; then
49 die "API of vdr-plugin.eclass in EAPI=\"${EAPI}\" not established"
50fi
70 51
71IUSE="" 52IUSE=""
72 53
73# Name of the plugin stripped from all vdrplugin-, vdr- and -cvs pre- and postfixes 54# Name of the plugin stripped from all vdrplugin-, vdr- and -cvs pre- and postfixes
74VDRPLUGIN="${PN/#vdrplugin-/}" 55VDRPLUGIN="${PN/#vdrplugin-/}"
82 63
83# depend on headers for DVB-driver 64# depend on headers for DVB-driver
84COMMON_DEPEND=">=media-tv/gentoo-vdr-scripts-0.4.2" 65COMMON_DEPEND=">=media-tv/gentoo-vdr-scripts-0.4.2"
85 66
86DEPEND="${COMMON_DEPEND} 67DEPEND="${COMMON_DEPEND}
87 media-tv/linuxtv-dvb-headers" 68 virtual/linuxtv-dvb-headers"
88RDEPEND="${COMMON_DEPEND} 69RDEPEND="${COMMON_DEPEND}
89 >=app-admin/eselect-vdr-0.0.2" 70 >=app-admin/eselect-vdr-0.0.2"
90 71
91# this is a hack for ebuilds like vdr-xineliboutput that want to 72# this is a hack for ebuilds like vdr-xineliboutput that want to
92# conditionally install a vdr-plugin 73# conditionally install a vdr-plugin
240 # Use a file instead of a variable as single-stepping via ebuild 221 # Use a file instead of a variable as single-stepping via ebuild
241 # destroys environment. 222 # destroys environment.
242 touch "${WORKDIR}"/.vdr-plugin_makefile_patched 223 touch "${WORKDIR}"/.vdr-plugin_makefile_patched
243} 224}
244 225
245vdr_add_local_patch() {
246 if test -d "${VDR_LOCAL_PATCHES_DIR}/${PN}"; then
247 echo
248 einfo "Applying local patches"
249 for LOCALPATCH in "${VDR_LOCAL_PATCHES_DIR}/${PN}/${PV}"/*.{diff,patch}; do
250 test -f "${LOCALPATCH}" && epatch "${LOCALPATCH}"
251 done
252 fi
253}
254
255vdr_has_gettext() { 226vdr_has_gettext() {
256 has_version ">=media-video/vdr-1.5.7" 227 has_version ">=media-video/vdr-1.5.7"
257} 228}
258 229
259plugin_has_gettext() { 230plugin_has_gettext() {
260 [[ -d po ]] 231 [[ -d po ]]
261} 232}
262 233
263vdr_i18n_convert_to_gettext() { 234vdr_i18n_convert_to_gettext() {
235 if has_version ">=media-video/vdr-1.7.22"; then
236 local i18n_tool="${ROOT}/usr/share/vdr/bin/i18n-to-gettext"
237 else
264 local i18n_tool="${ROOT}/usr/share/vdr/bin/i18n-to-gettext.pl" 238 local i18n_tool="${ROOT}/usr/share/vdr/bin/i18n-to-gettext.pl"
239 fi
265 240
266 if [[ ${NO_GETTEXT_HACK} == "1" ]]; then 241 if [[ ${NO_GETTEXT_HACK} == "1" ]]; then
267 ewarn "Conversion to gettext disabled in ebuild" 242 ewarn "Conversion to gettext disabled in ebuild"
268 return 1 243 return 1
269 fi 244 fi
380 355
381vdr-plugin_pkg_setup() { 356vdr-plugin_pkg_setup() {
382 # -fPIC is needed for shared objects on some platforms (amd64 and others) 357 # -fPIC is needed for shared objects on some platforms (amd64 and others)
383 append-flags -fPIC 358 append-flags -fPIC
384 359
360 # Plugins need to be compiled with position independent code, otherwise linking
361 # VDR against it will fail
362 if has_version ">=media-video/vdr-1.7.13"; then
363 append-flags -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
364 fi
365
385 # Where should the plugins live in the filesystem 366 # Where should the plugins live in the filesystem
386 VDR_PLUGIN_DIR="/usr/$(get_libdir)/vdr/plugins" 367 VDR_PLUGIN_DIR="/usr/$(get_libdir)/vdr/plugins"
387 VDR_CHECKSUM_DIR="${VDR_PLUGIN_DIR%/plugins}/checksums" 368 VDR_CHECKSUM_DIR="${VDR_PLUGIN_DIR%/plugins}/checksums"
388 369
389 # was /usr/lib/... some time ago 370 # was /usr/lib/... some time ago
393 # Pathes to includes 374 # Pathes to includes
394 VDR_INCLUDE_DIR="/usr/include/vdr" 375 VDR_INCLUDE_DIR="/usr/include/vdr"
395 DVB_INCLUDE_DIR="/usr/include" 376 DVB_INCLUDE_DIR="/usr/include"
396 377
397 TMP_LOCALE_DIR="${WORKDIR}/tmp-locale" 378 TMP_LOCALE_DIR="${WORKDIR}/tmp-locale"
379 if has_version ">=media-video/vdr-1.6.0_p2-r7"; then
380 LOCDIR="/usr/share/locale"
381 else
398 LOCDIR="/usr/share/vdr/locale" 382 LOCDIR="/usr/share/vdr/locale"
383 fi
399 384
400 if ! has_vdr; then 385 if ! has_vdr; then
401 # set to invalid values to detect abuses 386 # set to invalid values to detect abuses
402 VDRVERSION="eclass_no_vdr_installed" 387 VDRVERSION="eclass_no_vdr_installed"
403 APIVERSION="eclass_no_vdr_installed" 388 APIVERSION="eclass_no_vdr_installed"
408 # if vdr is required 393 # if vdr is required
409 die "VDR not found!" 394 die "VDR not found!"
410 fi 395 fi
411 return 396 return
412 fi 397 fi
413 398
414 VDRVERSION=$(awk -F'"' '/define VDRVERSION/ {print $2}' "${VDR_INCLUDE_DIR}"/config.h) 399 VDRVERSION=$(awk -F'"' '/define VDRVERSION/ {print $2}' "${VDR_INCLUDE_DIR}"/config.h)
415 APIVERSION=$(awk -F'"' '/define APIVERSION/ {print $2}' "${VDR_INCLUDE_DIR}"/config.h) 400 APIVERSION=$(awk -F'"' '/define APIVERSION/ {print $2}' "${VDR_INCLUDE_DIR}"/config.h)
416 [[ -z ${APIVERSION} ]] && APIVERSION="${VDRVERSION}" 401 [[ -z ${APIVERSION} ]] && APIVERSION="${VDRVERSION}"
417 402
418 einfo "Compiling against" 403 einfo "Compiling against"
419 einfo "\tvdr-${VDRVERSION} [API version ${APIVERSION}]" 404 einfo "\tvdr-${VDRVERSION} [API version ${APIVERSION}]"
405
406
407 if [ -n "${VDR_LOCAL_PATCHES_DIR}" ]; then
408 eerror "Using VDR_LOCAL_PATCHES_DIR is deprecated!"
409 eerror "Please move all your patches into"
410 eerror "${EROOT}/etc/portage/patches/${CATEGORY}/${P}"
411 eerror "and remove or unset the VDR_LOCAL_PATCHES_DIR variable."
412 die
413 fi
420} 414}
421 415
422vdr-plugin_src_util() { 416vdr-plugin_src_util() {
423
424 while [ "$1" ]; do 417 while [ "$1" ]; do
425
426 case "$1" in 418 case "$1" in
427 all) 419 all)
428 vdr-plugin_src_util unpack add_local_patch patchmakefile i18n 420 vdr-plugin_src_util unpack add_local_patch patchmakefile i18n
429 ;; 421 ;;
430 prepare|all_but_unpack) 422 prepare|all_but_unpack)
433 unpack) 425 unpack)
434 base_src_unpack 426 base_src_unpack
435 ;; 427 ;;
436 add_local_patch) 428 add_local_patch)
437 cd "${S}" || die "Could not change to plugin-source-directory!" 429 cd "${S}" || die "Could not change to plugin-source-directory!"
438 vdr_add_local_patch 430 epatch_user
439 ;; 431 ;;
440 patchmakefile) 432 patchmakefile)
441 cd "${S}" || die "Could not change to plugin-source-directory!" 433 cd "${S}" || die "Could not change to plugin-source-directory!"
442 vdr_patchmakefile 434 vdr_patchmakefile
443 ;; 435 ;;
459 eerror "Please report this at bugs.gentoo.org." 451 eerror "Please report this at bugs.gentoo.org."
460 die "vdr-plugin_pkg_setup not called!" 452 die "vdr-plugin_pkg_setup not called!"
461 fi 453 fi
462 if [ -z "$1" ]; then 454 if [ -z "$1" ]; then
463 case "${EAPI:-0}" in 455 case "${EAPI:-0}" in
464 2) 456 2|3|4)
465 vdr-plugin_src_util unpack 457 vdr-plugin_src_util unpack
466 ;; 458 ;;
467 *) 459 *)
468 vdr-plugin_src_util all 460 vdr-plugin_src_util all
469 ;; 461 ;;
602 ewarn "emerge --config ${PN} is no longer supported" 594 ewarn "emerge --config ${PN} is no longer supported"
603 vdr-plugin_print_enable_command 595 vdr-plugin_print_enable_command
604} 596}
605 597
606case "${EAPI:-0}" in 598case "${EAPI:-0}" in
607 2) 599 2|3|4)
608 EXPORT_FUNCTIONS pkg_setup src_unpack src_prepare src_compile src_install pkg_postinst pkg_postrm pkg_config 600 EXPORT_FUNCTIONS pkg_setup src_unpack src_prepare src_compile src_install pkg_postinst pkg_postrm pkg_config
609 ;; 601 ;;
610 *) 602 *)
611 EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_install pkg_postinst pkg_postrm pkg_config 603 EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_install pkg_postinst pkg_postrm pkg_config
612 ;; 604 ;;

Legend:
Removed from v.1.70  
changed lines
  Added in v.1.81

  ViewVC Help
Powered by ViewVC 1.1.20