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

Contents of /eclass/vdr-plugin.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.12 - (hide annotations) (download)
Fri Feb 3 21:18:52 2006 UTC (8 years, 10 months ago) by zzam
Branch: MAIN
Changes since 1.11: +3 -3 lines
inherit base.eclass to enable autopatching

1 zzam 1.1 # Copyright 1999-2005 Gentoo Foundation
2     # Distributed under the terms of the GNU General Public License v2
3 zzam 1.12 # $Header: /var/cvsroot/gentoo-x86/eclass/vdr-plugin.eclass,v 1.11 2005/12/10 10:59:59 zzam Exp $
4 zzam 1.1 #
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 swegener 1.4 #
26 zzam 1.1
27 zzam 1.2 # 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 zzam 1.5 # 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 zzam 1.2 #
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 zzam 1.1
46 zzam 1.12 inherit base eutils flag-o-matic
47 zzam 1.1
48     # Name of the plugin stripped from all vdrplugin-, vdr- and -cvs pre- and postfixes
49     VDRPLUGIN="${PN/#vdrplugin-/}"
50 zzam 1.2 VDRPLUGIN="${VDRPLUGIN/#vdr-/}"
51 zzam 1.1 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 zzam 1.11 DEPEND="media-tv/linuxtv-dvb-headers"
61 zzam 1.1
62     # Where should the plugins live in the filesystem
63     VDR_PLUGIN_DIR="/usr/lib/vdr/plugins"
64    
65 zzam 1.2 VDR_RC_DIR="/usr/lib/vdr/rcscript"
66    
67 zzam 1.1 # Pathes to includes
68     VDR_INCLUDE_DIR="/usr/include"
69     DVB_INCLUDE_DIR="/usr/include"
70    
71 zzam 1.2
72     # this code is from linux-mod.eclass
73     update_vdrplugindb() {
74 zzam 1.3 local VDRPLUGINDB_DIR=${ROOT}/var/lib/vdrplugin-rebuild/
75 zzam 1.2
76     if [[ ! -f ${VDRPLUGINDB_DIR}/vdrplugindb ]]; then
77     [[ ! -d ${VDRPLUGINDB_DIR} ]] && mkdir -p ${VDRPLUGINDB_DIR}
78     touch ${VDRPLUGINDB_DIR}/vdrplugindb
79     fi
80     if [[ -z $(grep ${CATEGORY}/${PN}-${PVR} ${VDRPLUGINDB_DIR}/vdrplugindb) ]]; then
81     einfo "Adding plugin to vdrplugindb."
82     echo "a:1:${CATEGORY}/${PN}-${PVR}" >> ${VDRPLUGINDB_DIR}/vdrplugindb
83     fi
84     }
85    
86     remove_vdrplugindb() {
87 zzam 1.3 local VDRPLUGINDB_DIR=${ROOT}/var/lib/vdrplugin-rebuild/
88 zzam 1.2
89     if [[ -n $(grep ${CATEGORY}/${PN}-${PVR} ${VDRPLUGINDB_DIR}/vdrplugindb) ]]; then
90     einfo "Removing ${CATEGORY}/${PN}-${PVR} from vdrplugindb."
91     sed -ie "/.*${CATEGORY}\/${P}.*/d" ${VDRPLUGINDB_DIR}/vdrplugindb
92     fi
93     }
94    
95 zzam 1.1 vdr-plugin_pkg_setup() {
96     # -fPIC is needed for shared objects on some platforms (amd64 and others)
97     append-flags -fPIC
98    
99     VDRVERSION=$(awk -F'"' '/VDRVERSION/ {print $2}' /usr/include/vdr/config.h)
100     einfo "Building ${PF} against vdr-${VDRVERSION}"
101     }
102    
103     vdr-plugin_src_unpack() {
104     [ -z "$1" ] && vdr-plugin_src_unpack unpack patchmakefile
105    
106     while [ "$1" ]; do
107    
108     case "$1" in
109     unpack)
110 zzam 1.12 base_src_unpack
111 zzam 1.1 ;;
112     patchmakefile)
113     cd ${S}
114    
115     ebegin "Patching Makefile"
116 zzam 1.6 sed -i.orig Makefile \
117 zzam 1.1 -e "s:^VDRDIR.*$:VDRDIR = ${VDR_INCLUDE_DIR}:" \
118     -e "s:^DVBDIR.*$:DVBDIR = ${DVB_INCLUDE_DIR}:" \
119     -e "s:^LIBDIR.*$:LIBDIR = ${S}:" \
120     -e "s:^TMPDIR.*$:TMPDIR = ${T}:" \
121     -e 's:^CXXFLAGS:#CXXFLAGS:' \
122     -e 's:-I$(VDRDIR)/include:-I$(VDRDIR):' \
123     -e 's:-I$(DVBDIR)/include:-I$(DVBDIR):' \
124     -e 's:-I$(VDRDIR) -I$(DVBDIR):-I$(DVBDIR) -I$(VDRDIR):' \
125 zzam 1.10 -e 's:$(VDRDIR)/\([a-z]*\.h\|Make.config\):$(VDRDIR)/vdr/\1:'
126 zzam 1.1 eend $?
127     ;;
128     esac
129    
130     shift
131     done
132     }
133    
134 zzam 1.6 vdr-plugin_copy_source_tree() {
135     cp -r ${S} ${T}/source-tree
136     cd ${T}/source-tree
137     mv Makefile.orig Makefile
138     sed -i Makefile \
139     -e "s:^DVBDIR.*$:DVBDIR = ${DVB_INCLUDE_DIR}:" \
140     -e 's:^CXXFLAGS:#CXXFLAGS:' \
141     -e 's:-I$(DVBDIR)/include:-I$(DVBDIR):' \
142     -e 's:-I$(VDRDIR) -I$(DVBDIR):-I$(DVBDIR) -I$(VDRDIR):'
143     }
144    
145     vdr-plugin_install_source_tree() {
146     einfo "Installing sources"
147     destdir=${VDRSOURCE_DIR}/vdr-${VDRVERSION}/PLUGINS/src/${VDRPLUGIN}
148     insinto ${destdir}-${PV}
149     doins -r ${T}/source-tree/*
150    
151     dosym ${VDRPLUGIN}-${PV} ${destdir}
152     }
153    
154 zzam 1.1 vdr-plugin_src_compile() {
155 zzam 1.7 [ -z "$1" ] && vdr-plugin_src_compile prepare compile
156 zzam 1.6
157 zzam 1.7 while [ "$1" ]; do
158    
159     case "$1" in
160     prepare)
161     [[ -n "${VDRSOURCE_DIR}" ]] && vdr-plugin_copy_source_tree
162     ;;
163     compile)
164     cd ${S}
165    
166     emake ${VDRPLUGIN_MAKE_TARGET:-all} || die "emake failed"
167     ;;
168     esac
169 zzam 1.1
170 zzam 1.7 shift
171     done
172 zzam 1.1 }
173    
174     vdr-plugin_src_install() {
175 zzam 1.6 [[ -n "${VDRSOURCE_DIR}" ]] && vdr-plugin_install_source_tree
176 zzam 1.1 cd ${S}
177    
178     insinto "${VDR_PLUGIN_DIR}"
179     doins libvdr-*.so.*
180     dodoc README* HISTORY CHANGELOG
181 zzam 1.2
182     for f in ${FILESDIR}/confd-${PV} ${FILESDIR}/confd; do
183     if [[ -f "${f}" ]]; then
184     insinto /etc/conf.d
185     newins "${f}" vdr.${VDRPLUGIN}
186     break
187     fi
188     done
189    
190     for f in ${FILESDIR}/rc-addon-${PV}.sh ${FILESDIR}/rc-addon.sh; do
191     if [[ -f "${f}" ]]; then
192     insinto "${VDR_RC_DIR}"
193 zzam 1.5 newins "${f}" plugin-${VDRPLUGIN}.sh
194 zzam 1.2 break
195     fi
196     done
197 zzam 1.1 }
198    
199     vdr-plugin_pkg_postinst() {
200 zzam 1.2 update_vdrplugindb
201 zzam 1.1 einfo
202 zzam 1.9 einfo "The vdr plugin ${VDRPLUGIN} has now been installed."
203     einfo "To activate execute the following command:"
204     einfo
205     einfo " emerge --config ${PN}"
206 zzam 1.1 einfo
207     }
208    
209 zzam 1.2 vdr-plugin_pkg_postrm() {
210     remove_vdrplugindb
211     }
212    
213 zzam 1.8 vdr-plugin_pkg_config_final() {
214     diff ${conf_orig} ${conf}
215     rm ${conf_orig}
216     }
217    
218     vdr-plugin_pkg_config() {
219     if [[ -z "${INSTALLPLUGIN}" ]]; then
220     INSTALLPLUGIN="${VDRPLUGIN}"
221     fi
222     # First test if plugin is already inside PLUGINS
223     local conf=/etc/conf.d/vdr
224     conf_orig=${conf}.before_emerge_config
225     cp ${conf} ${conf_orig}
226    
227     einfo "Reading ${conf}"
228     if ! grep -q "^PLUGINS=" ${conf}; then
229     local LINE=$(sed ${conf} -n -e '/^#.*PLUGINS=/=' | tail -n 1)
230     if [[ -n "${LINE}" ]]; then
231     sed -e ${LINE}'a PLUGINS=""' -i ${conf}
232     else
233     echo 'PLUGINS=""' >> ${conf}
234     fi
235     unset LINE
236     fi
237    
238     unset PLUGINS
239     PLUGINS=$(source /etc/conf.d/vdr; echo ${PLUGINS})
240    
241     active=0
242     for p in ${PLUGINS}; do
243     if [[ "${p}" == "${INSTALLPLUGIN}" ]]; then
244     active=1
245     break;
246     fi
247     done
248    
249     if [[ "${active}" == "1" ]]; then
250     einfo "${INSTALLPLUGIN} already activated"
251     echo
252     read -p "Do you want to deactivate ${INSTALLPLUGIN} (yes/no) " answer
253     if [[ "${answer}" != "yes" ]]; then
254     einfo "aborted"
255     return
256     fi
257     einfo "Removing ${INSTALLPLUGIN} from active plugins."
258     local LINE=$(sed ${conf} -n -e '/^PLUGINS=.*\<'${INSTALLPLUGIN}'\>/=' | tail -n 1)
259     sed -i ${conf} -e ${LINE}'s/\<'${INSTALLPLUGIN}'\>//' \
260     -e ${LINE}'s/ \( \)*/ /g' \
261     -e ${LINE}'s/ "/"/g' \
262     -e ${LINE}'s/" /"/g'
263    
264     vdr-plugin_pkg_config_final
265     return
266     fi
267    
268    
269     einfo "Adding ${INSTALLPLUGIN} to active plugins."
270     local LINE=$(sed ${conf} -n -e '/^PLUGINS=/=' | tail -n 1)
271     sed -i ${conf} -e ${LINE}'s/^PLUGINS=" *\(.*\)"/PLUGINS="\1 '${INSTALLPLUGIN}'"/' \
272     -e ${LINE}'s/ \( \)*/ /g' \
273     -e ${LINE}'s/ "/"/g' \
274     -e ${LINE}'s/" /"/g'
275    
276     vdr-plugin_pkg_config_final
277     }
278    
279     EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_install pkg_postinst pkg_postrm pkg_config

  ViewVC Help
Powered by ViewVC 1.1.20