1 |
# Copyright 1999-2005 Gentoo Foundation |
2 |
# Distributed under the terms of the GNU General Public License v2 |
3 |
# $Header: /var/cvsroot/gentoo-x86/eclass/vdr-plugin.eclass,v 1.6 2005/10/22 20:39:21 zzam Exp $ |
4 |
# |
5 |
# Author: |
6 |
# Matthias Schwarzott <zzam@gentoo.org> |
7 |
|
8 |
# vdr-plugin.eclass |
9 |
# |
10 |
# eclass to create ebuilds for vdr plugins |
11 |
# |
12 |
|
13 |
# Example ebuild (vdr-femon): |
14 |
# |
15 |
# inherit vdr-plugin |
16 |
# IUSE="" |
17 |
# SLOT="0" |
18 |
# DESCRIPTION="vdr Plugin: DVB Frontend Status Monitor (signal strengt/noise)" |
19 |
# HOMEPAGE="http://www.saunalahti.fi/~rahrenbe/vdr/femon/" |
20 |
# SRC_URI="http://www.saunalahti.fi/~rahrenbe/vdr/femon/files/${P}.tgz" |
21 |
# LICENSE="GPL-2" |
22 |
# KEYWORDS="~x86" |
23 |
# DEPEND=">=media-video/vdr-1.3.27" |
24 |
# |
25 |
# |
26 |
|
27 |
# There are some special files in ${FILESDIR} which get installed when |
28 |
# they exist: |
29 |
|
30 |
# ${FILESDIR}/confd-${PV} or ${FILESDIR}/confd: |
31 |
# The first matching is installed under /etc/conf.d/vdr.${VDRPLUGIN} |
32 |
# (in example vdr-femon this would be /etc/conf.d/vdr.femon) |
33 |
# |
34 |
# Everything put in variable _EXTRAOPTS is appended to the command line of |
35 |
# the plugin. |
36 |
|
37 |
|
38 |
# ${FILESDIR}/rc-addon-${PV}.sh or ${FILESDIR}/rc-addon.sh: |
39 |
# The first matching is installed under /usr/lib/vdr/rcscript/plugin-${VDRPLUGIN}.sh |
40 |
# (in example vdr-femon this would be /usr/lib/vdr/rcscript/plugin-femon.sh) |
41 |
# |
42 |
# This file is sourced by the startscript when plugin is activated in /etc/conf.d/vdr |
43 |
# It could be used for special startup actions for this plugins, or to create the |
44 |
# plugin command line options from a nicer version of a conf.d file. |
45 |
|
46 |
inherit eutils flag-o-matic |
47 |
|
48 |
# Name of the plugin stripped from all vdrplugin-, vdr- and -cvs pre- and postfixes |
49 |
VDRPLUGIN="${PN/#vdrplugin-/}" |
50 |
VDRPLUGIN="${VDRPLUGIN/#vdr-/}" |
51 |
VDRPLUGIN="${VDRPLUGIN/%-cvs/}" |
52 |
|
53 |
DESCRIPTION="vdr Plugin: ${VDRPLUGIN} (based on vdr-plugin.eclass)" |
54 |
|
55 |
# works in most cases |
56 |
S="${WORKDIR}/${VDRPLUGIN}-${PV}" |
57 |
|
58 |
# depend on headers for DVB-driver |
59 |
RDEPEND="" |
60 |
DEPEND="|| ( |
61 |
>=sys-kernel/linux-headers-2.6.11-r2 |
62 |
media-tv/linuxtv-dvb |
63 |
)" |
64 |
|
65 |
# Where should the plugins live in the filesystem |
66 |
VDR_PLUGIN_DIR="/usr/lib/vdr/plugins" |
67 |
|
68 |
VDR_RC_DIR="/usr/lib/vdr/rcscript" |
69 |
|
70 |
# Pathes to includes |
71 |
VDR_INCLUDE_DIR="/usr/include" |
72 |
DVB_INCLUDE_DIR="/usr/include" |
73 |
|
74 |
|
75 |
# this code is from linux-mod.eclass |
76 |
update_vdrplugindb() { |
77 |
local VDRPLUGINDB_DIR=${ROOT}/var/lib/vdrplugin-rebuild/ |
78 |
|
79 |
if [[ ! -f ${VDRPLUGINDB_DIR}/vdrplugindb ]]; then |
80 |
[[ ! -d ${VDRPLUGINDB_DIR} ]] && mkdir -p ${VDRPLUGINDB_DIR} |
81 |
touch ${VDRPLUGINDB_DIR}/vdrplugindb |
82 |
fi |
83 |
if [[ -z $(grep ${CATEGORY}/${PN}-${PVR} ${VDRPLUGINDB_DIR}/vdrplugindb) ]]; then |
84 |
einfo "Adding plugin to vdrplugindb." |
85 |
echo "a:1:${CATEGORY}/${PN}-${PVR}" >> ${VDRPLUGINDB_DIR}/vdrplugindb |
86 |
fi |
87 |
} |
88 |
|
89 |
remove_vdrplugindb() { |
90 |
local VDRPLUGINDB_DIR=${ROOT}/var/lib/vdrplugin-rebuild/ |
91 |
|
92 |
if [[ -n $(grep ${CATEGORY}/${PN}-${PVR} ${VDRPLUGINDB_DIR}/vdrplugindb) ]]; then |
93 |
einfo "Removing ${CATEGORY}/${PN}-${PVR} from vdrplugindb." |
94 |
sed -ie "/.*${CATEGORY}\/${P}.*/d" ${VDRPLUGINDB_DIR}/vdrplugindb |
95 |
fi |
96 |
} |
97 |
|
98 |
vdr-plugin_pkg_setup() { |
99 |
# -fPIC is needed for shared objects on some platforms (amd64 and others) |
100 |
append-flags -fPIC |
101 |
|
102 |
VDRVERSION=$(awk -F'"' '/VDRVERSION/ {print $2}' /usr/include/vdr/config.h) |
103 |
einfo "Building ${PF} against vdr-${VDRVERSION}" |
104 |
} |
105 |
|
106 |
vdr-plugin_src_unpack() { |
107 |
[ -z "$1" ] && vdr-plugin_src_unpack unpack patchmakefile |
108 |
|
109 |
while [ "$1" ]; do |
110 |
|
111 |
case "$1" in |
112 |
unpack) |
113 |
unpack ${A} |
114 |
;; |
115 |
patchmakefile) |
116 |
cd ${S} |
117 |
|
118 |
ebegin "Patching Makefile" |
119 |
sed -i.orig Makefile \ |
120 |
-e "s:^VDRDIR.*$:VDRDIR = ${VDR_INCLUDE_DIR}:" \ |
121 |
-e "s:^DVBDIR.*$:DVBDIR = ${DVB_INCLUDE_DIR}:" \ |
122 |
-e "s:^LIBDIR.*$:LIBDIR = ${S}:" \ |
123 |
-e "s:^TMPDIR.*$:TMPDIR = ${T}:" \ |
124 |
-e 's:^CXXFLAGS:#CXXFLAGS:' \ |
125 |
-e 's:-I$(VDRDIR)/include:-I$(VDRDIR):' \ |
126 |
-e 's:-I$(DVBDIR)/include:-I$(DVBDIR):' \ |
127 |
-e 's:-I$(VDRDIR) -I$(DVBDIR):-I$(DVBDIR) -I$(VDRDIR):' \ |
128 |
-e 's:$(VDRDIR)/\(config.h\|Make.config\):$(VDRDIR)/vdr/\1:' |
129 |
eend $? |
130 |
;; |
131 |
esac |
132 |
|
133 |
shift |
134 |
done |
135 |
} |
136 |
|
137 |
vdr-plugin_copy_source_tree() { |
138 |
cp -r ${S} ${T}/source-tree |
139 |
cd ${T}/source-tree |
140 |
mv Makefile.orig Makefile |
141 |
sed -i Makefile \ |
142 |
-e "s:^DVBDIR.*$:DVBDIR = ${DVB_INCLUDE_DIR}:" \ |
143 |
-e 's:^CXXFLAGS:#CXXFLAGS:' \ |
144 |
-e 's:-I$(DVBDIR)/include:-I$(DVBDIR):' \ |
145 |
-e 's:-I$(VDRDIR) -I$(DVBDIR):-I$(DVBDIR) -I$(VDRDIR):' |
146 |
} |
147 |
|
148 |
vdr-plugin_install_source_tree() { |
149 |
einfo "Installing sources" |
150 |
destdir=${VDRSOURCE_DIR}/vdr-${VDRVERSION}/PLUGINS/src/${VDRPLUGIN} |
151 |
insinto ${destdir}-${PV} |
152 |
doins -r ${T}/source-tree/* |
153 |
|
154 |
dosym ${VDRPLUGIN}-${PV} ${destdir} |
155 |
} |
156 |
|
157 |
vdr-plugin_src_compile() { |
158 |
[ -z "$1" ] && vdr-plugin_src_compile prepare compile |
159 |
|
160 |
while [ "$1" ]; do |
161 |
|
162 |
case "$1" in |
163 |
prepare) |
164 |
[[ -n "${VDRSOURCE_DIR}" ]] && vdr-plugin_copy_source_tree |
165 |
;; |
166 |
compile) |
167 |
cd ${S} |
168 |
|
169 |
emake ${VDRPLUGIN_MAKE_TARGET:-all} || die "emake failed" |
170 |
;; |
171 |
esac |
172 |
|
173 |
shift |
174 |
done |
175 |
} |
176 |
|
177 |
vdr-plugin_src_install() { |
178 |
[[ -n "${VDRSOURCE_DIR}" ]] && vdr-plugin_install_source_tree |
179 |
cd ${S} |
180 |
|
181 |
insinto "${VDR_PLUGIN_DIR}" |
182 |
doins libvdr-*.so.* |
183 |
dodoc README* HISTORY CHANGELOG |
184 |
|
185 |
for f in ${FILESDIR}/confd-${PV} ${FILESDIR}/confd; do |
186 |
if [[ -f "${f}" ]]; then |
187 |
insinto /etc/conf.d |
188 |
newins "${f}" vdr.${VDRPLUGIN} |
189 |
break |
190 |
fi |
191 |
done |
192 |
|
193 |
for f in ${FILESDIR}/rc-addon-${PV}.sh ${FILESDIR}/rc-addon.sh; do |
194 |
if [[ -f "${f}" ]]; then |
195 |
insinto "${VDR_RC_DIR}" |
196 |
newins "${f}" plugin-${VDRPLUGIN}.sh |
197 |
break |
198 |
fi |
199 |
done |
200 |
} |
201 |
|
202 |
vdr-plugin_pkg_postinst() { |
203 |
update_vdrplugindb |
204 |
einfo |
205 |
einfo "The vdr plugin ${VDRPLUGIN} has now been installed," |
206 |
einfo "to activate it you have to add it to /etc/conf.d/vdr." |
207 |
einfo |
208 |
} |
209 |
|
210 |
vdr-plugin_pkg_postrm() { |
211 |
remove_vdrplugindb |
212 |
} |
213 |
|
214 |
EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_install pkg_postinst pkg_postrm |