/[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.20 Revision 1.63
1# Copyright 1999-2005 Gentoo Foundation 1# Copyright 1999-2005 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.20 2006/05/02 15:00:15 zzam Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/Attic/vdr-plugin.eclass,v 1.63 2008/06/24 16:43:38 zzam Exp $
4# 4#
5# Author: 5# Author:
6# Matthias Schwarzott <zzam@gentoo.org> 6# Matthias Schwarzott <zzam@gentoo.org>
7# Joerg Bornkessel <hd_brummy@gentoo.org>
7 8
8# vdr-plugin.eclass 9# vdr-plugin.eclass
9# 10#
10# eclass to create ebuilds for vdr plugins 11# eclass to create ebuilds for vdr plugins
11# 12#
36# Installation of an rc-addon file for the plugin 37# Installation of an rc-addon file for the plugin
37# 38#
38# If ${VDR_RCADDON_FILE} is set install this file 39# If ${VDR_RCADDON_FILE} is set install this file
39# else install ${FILESDIR}/rc-addon.sh if it exists. 40# else install ${FILESDIR}/rc-addon.sh if it exists.
40# 41#
41# Gets installed under /usr/lib/vdr/rcscript/plugin-${VDRPLUGIN}.sh 42# Gets installed under ${VDR_RC_DIR}/plugin-${VDRPLUGIN}.sh
42# (in example vdr-femon this would be /usr/lib/vdr/rcscript/plugin-femon.sh) 43# (in example vdr-femon this would be /usr/share/vdr/rcscript/plugin-femon.sh)
43# 44#
44# This file is sourced by the startscript when plugin is activated in /etc/conf.d/vdr 45# This file is sourced by the startscript when plugin is activated in /etc/conf.d/vdr
45# It could be used for special startup actions for this plugins, or to create the 46# It could be used for special startup actions for this plugins, or to create the
46# plugin command line options from a nicer version of a conf.d file. 47# plugin command line options from a nicer version of a conf.d file.
47 48
49# HowTo use own local patches; Example
50#
51# Add to your /etc/make.conf:
52# VDR_LOCAL_PATCHES_DIR="/usr/local/patch"
53#
54# Add two DIR's in your local patch dir, ${PN}/${PV},
55# e.g for vdr-burn-0.1.0 should be:
56# /usr/local/patch/vdr-burn/0.1.0/
57#
58# all patches which ending on diff or patch in this DIR will automatically applied
59#
60
48inherit base eutils flag-o-matic 61inherit base multilib eutils flag-o-matic
49 62
50IUSE="debug" 63IUSE=""
51 64
52# Name of the plugin stripped from all vdrplugin-, vdr- and -cvs pre- and postfixes 65# Name of the plugin stripped from all vdrplugin-, vdr- and -cvs pre- and postfixes
53VDRPLUGIN="${PN/#vdrplugin-/}" 66VDRPLUGIN="${PN/#vdrplugin-/}"
54VDRPLUGIN="${VDRPLUGIN/#vdr-/}" 67VDRPLUGIN="${VDRPLUGIN/#vdr-/}"
55VDRPLUGIN="${VDRPLUGIN/%-cvs/}" 68VDRPLUGIN="${VDRPLUGIN/%-cvs/}"
58 71
59# works in most cases 72# works in most cases
60S="${WORKDIR}/${VDRPLUGIN}-${PV}" 73S="${WORKDIR}/${VDRPLUGIN}-${PV}"
61 74
62# depend on headers for DVB-driver 75# depend on headers for DVB-driver
63RDEPEND="" 76DEPEND=">=media-tv/gentoo-vdr-scripts-0.3.8
77 || ( >=media-tv/gentoo-vdr-scripts-0.4.2 >=media-tv/vdrplugin-rebuild-0.2 )
78 >=app-admin/eselect-vdr-0.0.2
64DEPEND="media-tv/linuxtv-dvb-headers" 79 media-tv/linuxtv-dvb-headers"
65 80
66# Where should the plugins live in the filesystem
67VDR_PLUGIN_DIR="/usr/lib/vdr/plugins"
68 81
69VDR_RC_DIR="/usr/lib/vdr/rcscript" 82# New method of storing plugindb
70 83# Called from src_install
71# Pathes to includes 84# file maintained by normal portage-methods
72VDR_INCLUDE_DIR="/usr/include" 85create_plugindb_file() {
73DVB_INCLUDE_DIR="/usr/include"
74
75
76# this code is from linux-mod.eclass
77update_vdrplugindb() {
78 local VDRPLUGINDB_DIR=${ROOT}/var/lib/vdrplugin-rebuild/ 86 local NEW_VDRPLUGINDB_DIR=/usr/share/vdr/vdrplugin-rebuild/
87 local DB_FILE="${NEW_VDRPLUGINDB_DIR}/${CATEGORY}-${PF}"
88 insinto "${NEW_VDRPLUGINDB_DIR}"
79 89
80 if [[ ! -f ${VDRPLUGINDB_DIR}/vdrplugindb ]]; then 90# BUG: portage-2.1.4_rc9 will delete the EBUILD= line, so we cannot use this code.
81 [[ ! -d ${VDRPLUGINDB_DIR} ]] && mkdir -p ${VDRPLUGINDB_DIR} 91# cat <<-EOT > "${D}/${DB_FILE}"
82 touch ${VDRPLUGINDB_DIR}/vdrplugindb 92# VDRPLUGIN_DB=1
83 fi 93# CREATOR=ECLASS
84 if [[ -z $(grep ${CATEGORY}/${PN}-${PVR} ${VDRPLUGINDB_DIR}/vdrplugindb) ]]; then 94# EBUILD=${CATEGORY}/${PN}
85 einfo "Adding plugin to vdrplugindb." 95# EBUILD_V=${PVR}
86 echo "a:1:${CATEGORY}/${PN}-${PVR}" >> ${VDRPLUGINDB_DIR}/vdrplugindb 96# EOT
87 fi 97 {
98 echo "VDRPLUGIN_DB=1"
99 echo "CREATOR=ECLASS"
100 echo "EBUILD=${CATEGORY}/${PN}"
101 echo "EBUILD_V=${PVR}"
102 echo "PLUGINS=\"$@\""
103 } > "${D}/${DB_FILE}"
88} 104}
89 105
90remove_vdrplugindb() { 106# Delete files created outside of vdr-plugin.eclass
107# vdrplugin-rebuild.ebuild converted plugindb and files are
108# not deleted by portage itself - should only be needed as
109# long as not every system has switched over to
110# vdrplugin-rebuild-0.2 / gentoo-vdr-scripts-0.4.2
111delete_orphan_plugindb_file() {
112 #elog Testing for orphaned plugindb file
91 local VDRPLUGINDB_DIR=${ROOT}/var/lib/vdrplugin-rebuild/ 113 local NEW_VDRPLUGINDB_DIR=/usr/share/vdr/vdrplugin-rebuild/
114 local DB_FILE="${ROOT}/${NEW_VDRPLUGINDB_DIR}/${CATEGORY}-${PF}"
92 115
93 if [[ -n $(grep ${CATEGORY}/${PN}-${PVR} ${VDRPLUGINDB_DIR}/vdrplugindb) ]]; then 116 # file exists
94 einfo "Removing ${CATEGORY}/${PN}-${PVR} from vdrplugindb." 117 [[ -f ${DB_FILE} ]] || return
95 sed -ie "/.*${CATEGORY}\/${P}.*/d" ${VDRPLUGINDB_DIR}/vdrplugindb
96 fi
97}
98 118
99vdr-plugin_pkg_setup() { 119 # will portage handle the file itself
100 # -fPIC is needed for shared objects on some platforms (amd64 and others) 120 if grep -q CREATOR=ECLASS "${DB_FILE}"; then
101 append-flags -fPIC 121 #elog file owned by eclass - don't touch it
102 use debug && append-flags -g 122 return
123 fi
103 124
104 VDRVERSION=$(awk -F'"' '/define VDRVERSION/ {print $2}' /usr/include/vdr/config.h) 125 elog "Removing orphaned plugindb-file."
105 APIVERSION=$(awk -F'"' '/define APIVERSION/ {print $2}' /usr/include/vdr/config.h) 126 elog "\t#rm ${DB_FILE}"
106 [[ -z ${APIVERSION} ]] && APIVERSION="${VDRVERSION}" 127 rm "${DB_FILE}"
107
108 einfo "Building ${PF} against vdr-${VDRVERSION}"
109 einfo "APIVERSION: ${APIVERSION}"
110} 128}
111 129
112vdr-plugin_src_unpack() {
113 [ -z "$1" ] && vdr-plugin_src_unpack unpack patchmakefile
114 130
115 while [ "$1" ]; do 131create_header_checksum_file()
132{
133 # Danger: Not using $ROOT here, as compile will also not use it !!!
134 # If vdr in $ROOT and / differ, plugins will not run anyway
116 135
117 case "$1" in 136 local CHKSUM="header-md5-vdr"
118 unpack) 137
119 base_src_unpack 138 if [[ -f ${VDR_CHECKSUM_DIR}/header-md5-vdr ]]; then
120 ;; 139 cp "${VDR_CHECKSUM_DIR}/header-md5-vdr" "${CHKSUM}"
140 elif type -p md5sum >/dev/null 2>&1; then
141 (
142 cd "${VDR_INCLUDE_DIR}"
143 md5sum *.h libsi/*.h|LC_ALL=C sort --key=2
144 ) > "${CHKSUM}"
145 else
146 die "Could not create md5 checksum of headers"
147 fi
148
149 insinto "${VDR_CHECKSUM_DIR}"
150 local p_name
151 for p_name; do
152 newins "${CHKSUM}" "header-md5-${p_name}"
153 done
154}
155
156fix_vdr_libsi_include()
157{
158 einfo "Fixing include of libsi-headers"
159 local f
160 for f; do
161 sed -i "${f}" \
162 -e '/#include/s:"\(.*libsi.*\)":<\1>:' \
163 -e '/#include/s:<.*\(libsi/.*\)>:<vdr/\1>:'
164 done
165}
166
121 patchmakefile) 167vdr_patchmakefile() {
122 if ! cd ${S}; then 168 einfo "Patching Makefile"
123 ewarn "There seems to be no plugin-directory with the name ${S##*/}" 169 [[ -e Makefile ]] || die "Makefile of plugin can not be found!"
124 ewarn "Perhaps you find one among these:" 170 cp Makefile "${WORKDIR}"/Makefile.before
125 cd "${WORKDIR}" 171
126 einfo "$(/bin/ls -1 ${WORKDIR})" 172 # plugin makefiles use VDRDIR in strange ways
127 die "Could not change to plugin-source-directory!" 173 # assumptions:
174 # 1. $(VDRDIR) contains Make.config
175 # 2. $(VDRDIR) contains config.h
176 # 3. $(VDRDIR)/include/vdr contains the headers
177 # 4. $(VDRDIR) contains main vdr Makefile
178 # 5. $(VDRDIR)/locale exists
179 # 6. $(VDRDIR) allows to access vdr source files
180 #
181 # We only have one directory (for now /usr/include/vdr),
182 # that contains vdr-headers and Make.config.
183 # To satisfy 1-3 we do this:
184 # Set VDRDIR=/usr/include/vdr
185 # Set VDRINCDIR=/usr/include
186 # Change $(VDRDIR)/include to $(VDRINCDIR)
187
188 ebegin " Setting paths"
189 sed -i Makefile \
190 -e "s:^VDRDIR.*$:VDRDIR = ${VDR_INCLUDE_DIR}:" \
191 -e "/^VDRDIR/a VDRINCDIR = ${VDR_INCLUDE_DIR%/vdr}" \
192 -e '/VDRINCDIR.*=/!s:$(VDRDIR)/include:$(VDRINCDIR):' \
193 \
194 -e 's:-I$(DVBDIR)/include::' \
195 -e 's:-I$(DVBDIR)::'
196 eend 0
197
198 # maybe needed for multiproto:
199 #sed -i Makefile \
200 # -e "s:^DVBDIR.*$:DVBDIR = ${DVB_INCLUDE_DIR}:" \
201 # -e 's:-I$(DVBDIR)/include:-I$(DVBDIR):'
202
203 if ! grep -q APIVERSION Makefile; then
204 ebegin " Converting to APIVERSION"
205 sed -i Makefile \
206 -e 's:^APIVERSION = :APIVERSION ?= :' \
207 -e 's:$(LIBDIR)/$@.$(VDRVERSION):$(LIBDIR)/$@.$(APIVERSION):' \
208 -e '/VDRVERSION =/a\APIVERSION = $(shell sed -ne '"'"'/define APIVERSION/s/^.*"\\(.*\\)".*$$/\\1/p'"'"' $(VDRDIR)/config.h)'
209 eend $?
210 fi
211
212 # Correcting Compile-Flags
213 # Do not overwrite CXXFLAGS, add LDFLAGS if missing
214 sed -i Makefile \
215 -e '/^CXXFLAGS[[:space:]]*=/s/=/?=/' \
216 -e '/LDFLAGS/!s:-shared:$(LDFLAGS) -shared:'
217
218 # Disabling file stripping, useful for debugging
219 sed -i Makefile \
220 -e '/@.*strip/d' \
221 -e '/strip \$(LIBDIR)\/\$@/d' \
222 -e '/@.*\$(STRIP)/d'
223
224 # Use a file instead of a variable as single-stepping via ebuild
225 # destroys environment.
226 touch "${WORKDIR}"/.vdr-plugin_makefile_patched
227}
228
229vdr_add_local_patch() {
230 if test -d "${VDR_LOCAL_PATCHES_DIR}/${PN}"; then
231 echo
232 einfo "Applying local patches"
233 for LOCALPATCH in "${VDR_LOCAL_PATCHES_DIR}/${PN}/${PV}"/*.{diff,patch}; do
234 test -f "${LOCALPATCH}" && epatch "${LOCALPATCH}"
235 done
236 fi
237}
238
239vdr_has_gettext() {
240 has_version ">=media-video/vdr-1.5.7"
241}
242
243plugin_has_gettext() {
244 [[ -d po ]]
245}
246
247vdr_i18n_convert_to_gettext() {
248 local i18n_tool="${ROOT}/usr/share/vdr/bin/i18n-to-gettext.pl"
249
250 if [[ ${NO_GETTEXT_HACK} == "1" ]]; then
251 ewarn "Conversion to gettext disabled in ebuild"
252 return 1
253 fi
254
255 if [[ ! -x ${i18n_tool} ]]; then
256 eerror "Missing ${i18n_tool}"
257 eerror "Please re-emerge vdr"
258 die "Missing ${i18n_tool}"
259 fi
260
261 ebegin "Auto converting translations to gettext"
262 # call i18n-to-gettext tool
263 # take all texts missing tr call into special file
264 "${i18n_tool}" 2>/dev/null \
265 |sed -e '/^"/!d' \
266 -e '/^""$/d' \
267 -e 's/\(.*\)/trNOOP(\1)/' \
268 > dummy-translations-trNOOP.c
269
270 # if there were untranslated texts just run it again
271 # now the missing calls are listed in
272 # dummy-translations-trNOOP.c
273 if [[ -s dummy-translations-trNOOP.c ]]; then
274 "${i18n_tool}" &>/dev/null
275 fi
276
277 # now use the modified Makefile
278 if [[ -f Makefile.new ]]; then
279 mv Makefile.new Makefile
280 eend 0 ""
281 else
282 eend 1 "Conversion to gettext failed. Plugin needs fixing."
283 return 1
284 fi
285}
286
287vdr_i18n_disable_gettext() {
288 ebegin "Disabling gettext support in plugin"
289 # Remove i18n Target if using older vdr
290 sed -i Makefile \
291 -e '/^all:/s/ i18n//'
292 eend 0
293}
294
295vdr_i18n() {
296 if vdr_has_gettext; then
297 einfo "VDR has gettext support"
298 if plugin_has_gettext; then
299 einfo "Plugin has gettext support, fine"
300 if [[ ${NO_GETTEXT_HACK} == "1" ]]; then
301 ewarn "Please remove left over NO_GETTEXT_HACK."
128 fi 302 fi
129 303 else
130 ebegin "Patching Makefile" 304 vdr_i18n_convert_to_gettext
131 [[ -e Makefile ]] || die "Makefile of plugin can not be found!" 305 if [[ $? != 0 ]]; then
132 sed -i.orig Makefile \ 306 eerror ""
133 -e "s:^VDRDIR.*$:VDRDIR = ${VDR_INCLUDE_DIR}:" \ 307 eerror "Plugin will have only english OSD texts"
134 -e "s:^DVBDIR.*$:DVBDIR = ${DVB_INCLUDE_DIR}:" \ 308 eerror "it needs manual fixing."
135 -e "s:^LIBDIR.*$:LIBDIR = ${S}:" \ 309 fi
136 -e "s:^TMPDIR.*$:TMPDIR = ${T}:" \ 310 fi
137 -e 's:^CXXFLAGS:#CXXFLAGS:' \ 311 else
138 -e 's:-I$(VDRDIR)/include:-I$(VDRDIR):' \ 312 einfo "VDR has no gettext support"
139 -e 's:-I$(DVBDIR)/include:-I$(DVBDIR):' \ 313 if plugin_has_gettext; then
140 -e 's:-I$(VDRDIR) -I$(DVBDIR):-I$(DVBDIR) -I$(VDRDIR):' \ 314 vdr_i18n_disable_gettext
141 -e 's:$(VDRDIR)/\([a-z]*\.h\|Make.config\):$(VDRDIR)/vdr/\1:' \ 315 fi
142 -e 's:^APIVERSION = :APIVERSION ?= :' \ 316 fi
143 -e 's:$(LIBDIR)/$@.$(VDRVERSION):$(LIBDIR)/$@.$(APIVERSION):' \
144 -e '1i\APIVERSION = '"${APIVERSION}"
145 eend $?
146 ;;
147 esac
148
149 shift
150 done
151} 317}
152 318
153vdr-plugin_copy_source_tree() { 319vdr-plugin_copy_source_tree() {
320 pushd . >/dev/null
154 cp -r ${S} ${T}/source-tree 321 cp -r "${S}" "${T}"/source-tree
155 cd ${T}/source-tree 322 cd "${T}"/source-tree
156 mv Makefile.orig Makefile 323 cp "${WORKDIR}"/Makefile.before Makefile
324 # TODO: Fix this, maybe no longer needed
157 sed -i Makefile \ 325 sed -i Makefile \
158 -e "s:^DVBDIR.*$:DVBDIR = ${DVB_INCLUDE_DIR}:" \ 326 -e "s:^DVBDIR.*$:DVBDIR = ${DVB_INCLUDE_DIR}:" \
159 -e 's:^CXXFLAGS:#CXXFLAGS:' \ 327 -e 's:^CXXFLAGS:#CXXFLAGS:' \
160 -e 's:-I$(DVBDIR)/include:-I$(DVBDIR):' \ 328 -e 's:-I$(DVBDIR)/include:-I$(DVBDIR):' \
161 -e 's:-I$(VDRDIR) -I$(DVBDIR):-I$(DVBDIR) -I$(VDRDIR):' 329 -e 's:-I$(VDRDIR) -I$(DVBDIR):-I$(DVBDIR) -I$(VDRDIR):'
330 popd >/dev/null
162} 331}
163 332
164vdr-plugin_install_source_tree() { 333vdr-plugin_install_source_tree() {
165 einfo "Installing sources" 334 einfo "Installing sources"
166 destdir=${VDRSOURCE_DIR}/vdr-${VDRVERSION}/PLUGINS/src/${VDRPLUGIN} 335 destdir="${VDRSOURCE_DIR}/vdr-${VDRVERSION}/PLUGINS/src/${VDRPLUGIN}"
167 insinto ${destdir}-${PV} 336 insinto "${destdir}-${PV}"
168 doins -r ${T}/source-tree/* 337 doins -r "${T}"/source-tree/*
169 338
170 dosym ${VDRPLUGIN}-${PV} ${destdir} 339 dosym "${VDRPLUGIN}-${PV}" "${destdir}"
340}
341
342vdr-plugin_print_enable_command() {
343 elog
344 elog "To activate this vdr-plugin execute the following command:"
345 elog "\teselect vdr-plugin enable ${PN#vdr-}"
346 elog
347}
348
349
350## exported functions
351
352vdr-plugin_pkg_setup() {
353 # -fPIC is needed for shared objects on some platforms (amd64 and others)
354 append-flags -fPIC
355
356 # Where should the plugins live in the filesystem
357 VDR_PLUGIN_DIR="/usr/$(get_libdir)/vdr/plugins"
358 VDR_CHECKSUM_DIR="${VDR_PLUGIN_DIR%/plugins}/checksums"
359
360 # was /usr/lib/... some time ago
361 # since gentoo-vdr-scripts-0.3.6 it works with /usr/share/...
362 VDR_RC_DIR="/usr/share/vdr/rcscript"
363
364 # Pathes to includes
365 VDR_INCLUDE_DIR="/usr/include/vdr"
366 DVB_INCLUDE_DIR="/usr/include"
367
368 TMP_LOCALE_DIR="${WORKDIR}/tmp-locale"
369 LOCDIR="/usr/share/vdr/locale"
370
371 VDRVERSION=$(awk -F'"' '/define VDRVERSION/ {print $2}' "${VDR_INCLUDE_DIR}"/config.h)
372 APIVERSION=$(awk -F'"' '/define APIVERSION/ {print $2}' "${VDR_INCLUDE_DIR}"/config.h)
373 [[ -z ${APIVERSION} ]] && APIVERSION="${VDRVERSION}"
374
375 einfo "Compiling against"
376 einfo "\tvdr-${VDRVERSION} [API version ${APIVERSION}]"
377}
378
379vdr-plugin_src_unpack() {
380 if [[ -z ${VDR_INCLUDE_DIR} ]]; then
381 eerror "Wrong use of vdr-plugin.eclass."
382 eerror "An ebuild for a vdr-plugin will not work without calling vdr-plugin_pkg_setup."
383 echo
384 eerror "Please report this at bugs.gentoo.org."
385 die "vdr-plugin_pkg_setup not called!"
386 fi
387 [ -z "$1" ] && vdr-plugin_src_unpack unpack add_local_patch patchmakefile i18n
388
389 while [ "$1" ]; do
390
391 case "$1" in
392 all_but_unpack)
393 vdr-plugin_src_unpack add_local_patch patchmakefile i18n
394 ;;
395 unpack)
396 base_src_unpack
397 ;;
398 add_local_patch)
399 cd "${S}" || die "Could not change to plugin-source-directory!"
400 vdr_add_local_patch
401 ;;
402 patchmakefile)
403 cd "${S}" || die "Could not change to plugin-source-directory!"
404 vdr_patchmakefile
405 ;;
406 i18n)
407 cd "${S}" || die "Could not change to plugin-source-directory!"
408 vdr_i18n
409 ;;
410 esac
411
412 shift
413 done
171} 414}
172 415
173vdr-plugin_src_compile() { 416vdr-plugin_src_compile() {
174 [ -z "$1" ] && vdr-plugin_src_compile prepare compile 417 [ -z "$1" ] && vdr-plugin_src_compile prepare compile
175 418
178 case "$1" in 421 case "$1" in
179 prepare) 422 prepare)
180 [[ -n "${VDRSOURCE_DIR}" ]] && vdr-plugin_copy_source_tree 423 [[ -n "${VDRSOURCE_DIR}" ]] && vdr-plugin_copy_source_tree
181 ;; 424 ;;
182 compile) 425 compile)
426 if [[ ! -f ${WORKDIR}/.vdr-plugin_makefile_patched ]]; then
427 eerror "Wrong use of vdr-plugin.eclass."
428 eerror "An ebuild for a vdr-plugin will not work without"
429 eerror "calling vdr-plugin_src_unpack to patch the Makefile."
430 echo
431 eerror "Please report this at bugs.gentoo.org."
432 die "vdr-plugin_src_unpack not called!"
433 fi
183 cd ${S} 434 cd "${S}"
184 435
185 emake ${VDRPLUGIN_MAKE_TARGET:-all} || die "emake failed" 436 emake ${BUILD_PARAMS} \
437 ${VDRPLUGIN_MAKE_TARGET:-all} \
438 LOCALEDIR="${TMP_LOCALE_DIR}" \
439 LIBDIR="${S}" \
440 TMPDIR="${T}" \
441 || die "emake failed"
186 ;; 442 ;;
187 esac 443 esac
188 444
189 shift 445 shift
190 done 446 done
191} 447}
192 448
193vdr-plugin_src_install() { 449vdr-plugin_src_install() {
194 [[ -n "${VDRSOURCE_DIR}" ]] && vdr-plugin_install_source_tree 450 [[ -n "${VDRSOURCE_DIR}" ]] && vdr-plugin_install_source_tree
451 cd "${WORKDIR}"
452
453 if [[ -n ${VDR_MAINTAINER_MODE} ]]; then
454 local mname="${P}-Makefile"
455 cp "${S}"/Makefile "${mname}.patched"
456 cp Makefile.before "${mname}.before"
457
458 diff -u "${mname}.before" "${mname}.patched" > "${mname}.diff"
459
460 insinto "/usr/share/vdr/maintainer-data/makefile-changes"
461 doins "${mname}.diff"
462
463 insinto "/usr/share/vdr/maintainer-data/makefile-before"
464 doins "${mname}.before"
465
466 insinto "/usr/share/vdr/maintainer-data/makefile-patched"
467 doins "${mname}.patched"
468
469 fi
470
471
472
195 cd ${S} 473 cd "${S}"
196
197 insinto "${VDR_PLUGIN_DIR}" 474 insinto "${VDR_PLUGIN_DIR}"
198 doins libvdr-*.so.* 475 doins libvdr-*.so.*
476
477 # create list of all created plugin libs
478 local p_list="" p_name
479 for p in libvdr-*.so.*; do
480 p_name="${p%.so*}"
481 p_name="${p_name#lib}"
482 p_list="${p_list} ${p_name}"
483 done
484
485 create_header_checksum_file ${p_list}
486 create_plugindb_file ${p_list}
487
488 if vdr_has_gettext && [[ -d ${TMP_LOCALE_DIR} ]]; then
489 einfo "Installing locales"
490 cd "${TMP_LOCALE_DIR}"
491 insinto "${LOCDIR}"
492 doins -r *
493 fi
494
495 cd "${S}"
496 local docfile
199 dodoc README* HISTORY CHANGELOG 497 for docfile in README* HISTORY CHANGELOG; do
200 498 [[ -f ${docfile} ]] && dodoc ${docfile}
499 done
201 500
202 # if VDR_CONFD_FILE is empty and ${FILESDIR}/confd exists take it 501 # if VDR_CONFD_FILE is empty and ${FILESDIR}/confd exists take it
203 [[ -z ${VDR_CONFD_FILE} ]] && [[ -e ${FILESDIR}/confd ]] && VDR_CONFD_FILE=${FILESDIR}/confd 502 [[ -z ${VDR_CONFD_FILE} ]] && [[ -e ${FILESDIR}/confd ]] && VDR_CONFD_FILE=${FILESDIR}/confd
204 503
205 if [[ -n ${VDR_CONFD_FILE} ]]; then 504 if [[ -n ${VDR_CONFD_FILE} ]]; then
206 insinto /etc/conf.d
207 newins "${VDR_CONFD_FILE}" vdr.${VDRPLUGIN} 505 newconfd "${VDR_CONFD_FILE}" vdr.${VDRPLUGIN}
208 fi 506 fi
209 507
210 508
211 # if VDR_RCADDON_FILE is empty and ${FILESDIR}/rc-addon.sh exists take it 509 # if VDR_RCADDON_FILE is empty and ${FILESDIR}/rc-addon.sh exists take it
212 [[ -z ${VDR_RCADDON_FILE} ]] && [[ -e ${FILESDIR}/rc-addon.sh ]] && VDR_RCADDON_FILE=${FILESDIR}/rc-addon.sh 510 [[ -z ${VDR_RCADDON_FILE} ]] && [[ -e ${FILESDIR}/rc-addon.sh ]] && VDR_RCADDON_FILE=${FILESDIR}/rc-addon.sh
213 511
214 if [[ -n ${VDR_RCADDON_FILE} ]]; then 512 if [[ -n ${VDR_RCADDON_FILE} ]]; then
215 insinto "${VDR_RC_DIR}" 513 insinto "${VDR_RC_DIR}"
216 newins "${VDR_RCADDON_FILE}" plugin-${VDRPLUGIN}.sh 514 newins "${VDR_RCADDON_FILE}" plugin-${VDRPLUGIN}.sh
217 fi 515 fi
218
219
220
221 insinto /usr/lib/vdr/checksums
222 if [[ -f ${ROOT}/usr/lib/vdr/checksums/header-md5-vdr ]]; then
223 newins ${ROOT}/usr/lib/vdr/checksums/header-md5-vdr header-md5-${PN}
224 else
225 if which md5sum >/dev/null 2>&1; then
226 cd ${S}
227 (
228 cd ${ROOT}${VDR_INCLUDE_DIR}/vdr
229 md5sum *.h libsi/*.h|LC_ALL=C sort --key=2
230 ) > header-md5-${PN}
231 doins header-md5-${PN}
232 fi
233 fi
234} 516}
235 517
236vdr-plugin_pkg_postinst() { 518vdr-plugin_pkg_postinst() {
237 update_vdrplugindb 519 vdr-plugin_print_enable_command
238 einfo 520
239 einfo "The vdr plugin ${VDRPLUGIN} has now been installed."
240 einfo "To activate execute the following command:"
241 einfo
242 einfo " emerge --config ${PN}"
243 einfo
244 if [[ -n "${VDR_CONFD_FILE}" ]]; then 521 if [[ -n "${VDR_CONFD_FILE}" ]]; then
245 einfo "And have a look at the config-file" 522 elog "Please have a look at the config-file"
246 einfo "/etc/conf.d/vdr.${VDRPLUGIN}" 523 elog "\t/etc/conf.d/vdr.${VDRPLUGIN}"
247 einfo 524 elog
248 fi 525 fi
249} 526}
250 527
251vdr-plugin_pkg_postrm() { 528vdr-plugin_pkg_postrm() {
252 remove_vdrplugindb 529 delete_orphan_plugindb_file
253}
254
255vdr-plugin_pkg_config_final() {
256 diff ${conf_orig} ${conf}
257 rm ${conf_orig}
258} 530}
259 531
260vdr-plugin_pkg_config() { 532vdr-plugin_pkg_config() {
261 if [[ -z "${INSTALLPLUGIN}" ]]; then 533 ewarn "emerge --config ${PN} is no longer supported"
262 INSTALLPLUGIN="${VDRPLUGIN}" 534 vdr-plugin_print_enable_command
263 fi
264 # First test if plugin is already inside PLUGINS
265 local conf=/etc/conf.d/vdr
266 conf_orig=${conf}.before_emerge_config
267 cp ${conf} ${conf_orig}
268
269 einfo "Reading ${conf}"
270 if ! grep -q "^PLUGINS=" ${conf}; then
271 local LINE=$(sed ${conf} -n -e '/^#.*PLUGINS=/=' | tail -n 1)
272 if [[ -n "${LINE}" ]]; then
273 sed -e ${LINE}'a PLUGINS=""' -i ${conf}
274 else
275 echo 'PLUGINS=""' >> ${conf}
276 fi
277 unset LINE
278 fi
279
280 unset PLUGINS
281 PLUGINS=$(source /etc/conf.d/vdr; echo ${PLUGINS})
282
283 active=0
284 for p in ${PLUGINS}; do
285 if [[ "${p}" == "${INSTALLPLUGIN}" ]]; then
286 active=1
287 break;
288 fi
289 done
290
291 if [[ "${active}" == "1" ]]; then
292 einfo "${INSTALLPLUGIN} already activated"
293 echo
294 read -p "Do you want to deactivate ${INSTALLPLUGIN} (yes/no) " answer
295 if [[ "${answer}" != "yes" ]]; then
296 einfo "aborted"
297 return
298 fi
299 einfo "Removing ${INSTALLPLUGIN} from active plugins."
300 local LINE=$(sed ${conf} -n -e '/^PLUGINS=.*\<'${INSTALLPLUGIN}'\>/=' | tail -n 1)
301 sed -i ${conf} -e ${LINE}'s/\<'${INSTALLPLUGIN}'\>//' \
302 -e ${LINE}'s/ \( \)*/ /g' \
303 -e ${LINE}'s/ "/"/g' \
304 -e ${LINE}'s/" /"/g'
305
306 vdr-plugin_pkg_config_final
307 return
308 fi
309
310
311 einfo "Adding ${INSTALLPLUGIN} to active plugins."
312 local LINE=$(sed ${conf} -n -e '/^PLUGINS=/=' | tail -n 1)
313 sed -i ${conf} -e ${LINE}'s/^PLUGINS=" *\(.*\)"/PLUGINS="\1 '${INSTALLPLUGIN}'"/' \
314 -e ${LINE}'s/ \( \)*/ /g' \
315 -e ${LINE}'s/ "/"/g' \
316 -e ${LINE}'s/" /"/g'
317
318 vdr-plugin_pkg_config_final
319} 535}
320 536
321EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_install pkg_postinst pkg_postrm pkg_config 537EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_install pkg_postinst pkg_postrm pkg_config

Legend:
Removed from v.1.20  
changed lines
  Added in v.1.63

  ViewVC Help
Powered by ViewVC 1.1.20