/[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.54 Revision 1.59
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.54 2008/03/22 18:04:51 zzam Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/Attic/vdr-plugin.eclass,v 1.59 2008/04/23 13:56:20 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# Joerg Bornkessel <hd_brummy@gentoo.org>
8 8
145 doins header-md5-${PN} 145 doins header-md5-${PN}
146 fi 146 fi
147 fi 147 fi
148} 148}
149 149
150fix_vdr_libsi_include()
151{
152 einfo "Fixing include of libsi-headers"
153 local f
154 for f; do
155 sed -i "${f}" \
156 -e '/#include/s:"\(.*libsi.*\)":<\1>:' \
157 -e '/#include/s:<.*\(libsi/.*\)>:<vdr/\1>:'
158 done
159}
160
161vdr_patchmakefile() {
162 einfo "Patching Makefile"
163 [[ -e Makefile ]] || die "Makefile of plugin can not be found!"
164 cp Makefile "${WORKDIR}"/Makefile.before
165
166 ebegin " Setting Pathes"
167 sed -i Makefile \
168 -e "s:^VDRDIR.*$:VDRDIR = ${VDR_INCLUDE_DIR}:" \
169 -e "s:^LIBDIR.*$:LIBDIR = ${S}:" \
170 -e "s:^TMPDIR.*$:TMPDIR = ${T}:" \
171 -e 's:-I$(VDRDIR)/include:-I'"${VDR_INCLUDE_DIR%vdr}"':' \
172 -e "/^DVBDIR/d" \
173 -e 's:-I$(DVBDIR)/include::' \
174 -e 's:-I$(DVBDIR)::'
175 eend $?
176
177 # maybe needed for multiproto:
178 #sed -i Makefile \
179 # -e "s:^DVBDIR.*$:DVBDIR = ${DVB_INCLUDE_DIR}:" \
180 # -e 's:-I$(VDRDIR)/include -I$(DVBDIR)/include:-I$(DVBDIR)/include -I$(VDRDIR)/include:' \
181 # -e 's:-I$(DVBDIR)/include:-I$(DVBDIR):'
182
183 if ! grep -q APIVERSION Makefile; then
184 ebegin " Converting to APIVERSION"
185 sed -i Makefile \
186 -e 's:^APIVERSION = :APIVERSION ?= :' \
187 -e 's:$(LIBDIR)/$@.$(VDRVERSION):$(LIBDIR)/$@.$(APIVERSION):' \
188 -e '/VDRVERSION =/a\APIVERSION = $(shell sed -ne '"'"'/define APIVERSION/s/^.*"\\(.*\\)".*$$/\\1/p'"'"' $(VDRDIR)/config.h)'
189 eend $?
190 fi
191
192 # Correcting Compile-Flags
193 # Do not overwrite CXXFLAGS, add LDFLAGS if missing
194 sed -i Makefile \
195 -e '/^CXXFLAGS[[:space:]]*=/s/=/?=/' \
196 -e '/LDFLAGS/!s:-shared:$(LDFLAGS) -shared:'
197
198 # Disabling file stripping, useful for debugging
199 sed -i Makefile \
200 -e '/@.*strip/d' \
201 -e '/strip \$(LIBDIR)\/\$@/d' \
202 -e '/@.*\$(STRIP)/d'
203
204 # Use a file instead of a variable as single-stepping via ebuild
205 # destroys environment.
206 touch "${WORKDIR}"/.vdr-plugin_makefile_patched
207}
208
209vdr_add_local_patch() {
210 if test -d "${VDR_LOCAL_PATCHES_DIR}/${PN}"; then
211 echo
212 einfo "Applying local patches"
213 for LOCALPATCH in "${VDR_LOCAL_PATCHES_DIR}/${PN}/${PV}"/*.{diff,patch}; do
214 test -f "${LOCALPATCH}" && epatch "${LOCALPATCH}"
215 done
216 fi
217}
218
219vdr_has_gettext() {
220 has_version ">=media-video/vdr-1.5.7"
221}
222
223plugin_has_gettext() {
224 [[ -d po ]]
225}
226
227vdr_i18n_convert_to_gettext() {
228 local i18n_tool="${ROOT}/usr/share/vdr/bin/i18n-to-gettext.pl"
229
230 if [[ ${NO_GETTEXT_HACK} == "1" ]]; then
231 ewarn "Conversion to gettext disabled in ebuild"
232 return 1
233 fi
234
235 if [[ ! -x ${i18n_tool} ]]; then
236 eerror "Missing ${i18n_tool}"
237 eerror "Please re-emerge vdr"
238 die "Missing ${i18n_tool}"
239 fi
240
241 ebegin "Auto converting translations to gettext"
242 # call i18n-to-gettext tool
243 # take all texts missing tr call into special file
244 "${i18n_tool}" 2>/dev/null \
245 |sed -e '/^"/!d' \
246 -e '/^""$/d' \
247 -e 's/\(.*\)/trNOOP(\1)/' \
248 > dummy-translations-trNOOP.c
249
250 # if there were untranslated texts just run it again
251 # now the missing calls are listed in
252 # dummy-translations-trNOOP.c
253 if [[ -s dummy-translations-trNOOP.c ]]; then
254 "${i18n_tool}" &>/dev/null
255 fi
256
257 # now use the modified Makefile
258 if [[ -f Makefile.new ]]; then
259 mv Makefile.new Makefile
260 eend 0 ""
261 else
262 eend 1 "Conversion to gettext failed. Plugin needs fixing."
263 return 1
264 fi
265}
266
267vdr_i18n_disable_gettext() {
268 ebegin "Disabling gettext support in plugin"
269 # Remove i18n Target if using older vdr
270 sed -i Makefile \
271 -e '/^all:/s/ i18n//'
272 eend 0
273}
274
275vdr_i18n() {
276 if vdr_has_gettext; then
277 einfo "VDR has gettext support"
278 if plugin_has_gettext; then
279 einfo "Plugin has gettext support, fine"
280 else
281 vdr_i18n_convert_to_gettext
282 if [[ $? != 0 ]]; then
283 eerror ""
284 eerror "Plugin will have only english OSD texts"
285 eerror "it needs manual fixing."
286 fi
287 fi
288 else
289 einfo "VDR has no gettext support"
290 if plugin_has_gettext; then
291 vdr_i18n_disable_gettext
292 fi
293 fi
294}
295
296vdr-plugin_copy_source_tree() {
297 pushd . >/dev/null
298 cp -r "${S}" "${T}"/source-tree
299 cd "${T}"/source-tree
300 cp "${WORKDIR}"/Makefile.before Makefile
301 # TODO: Fix this, maybe no longer needed
302 sed -i Makefile \
303 -e "s:^DVBDIR.*$:DVBDIR = ${DVB_INCLUDE_DIR}:" \
304 -e 's:^CXXFLAGS:#CXXFLAGS:' \
305 -e 's:-I$(DVBDIR)/include:-I$(DVBDIR):' \
306 -e 's:-I$(VDRDIR) -I$(DVBDIR):-I$(DVBDIR) -I$(VDRDIR):'
307 popd >/dev/null
308}
309
310vdr-plugin_install_source_tree() {
311 einfo "Installing sources"
312 destdir="${VDRSOURCE_DIR}/vdr-${VDRVERSION}/PLUGINS/src/${VDRPLUGIN}"
313 insinto "${destdir}-${PV}"
314 doins -r "${T}"/source-tree/*
315
316 dosym "${VDRPLUGIN}-${PV}" "${destdir}"
317}
318
319vdr-plugin_print_enable_command() {
320 elog
321 elog "To activate this vdr-plugin execute the following command:"
322 elog "\teselect vdr-plugin enable ${PN#vdr-}"
323 elog
324}
325
326
327## exported functions
328
150vdr-plugin_pkg_setup() { 329vdr-plugin_pkg_setup() {
151 # -fPIC is needed for shared objects on some platforms (amd64 and others) 330 # -fPIC is needed for shared objects on some platforms (amd64 and others)
152 append-flags -fPIC 331 append-flags -fPIC
153 332
154 # Where should the plugins live in the filesystem 333 # Where should the plugins live in the filesystem
164 DVB_INCLUDE_DIR="/usr/include" 343 DVB_INCLUDE_DIR="/usr/include"
165 344
166 345
167 TMP_LOCALE_DIR="${WORKDIR}/tmp-locale" 346 TMP_LOCALE_DIR="${WORKDIR}/tmp-locale"
168 LOCDIR="/usr/share/vdr/locale" 347 LOCDIR="/usr/share/vdr/locale"
169 if has_version ">=media-video/vdr-1.5.7"; then
170 USE_GETTEXT=1
171 else
172 USE_GETTEXT=0
173 fi
174 348
175 VDRVERSION=$(awk -F'"' '/define VDRVERSION/ {print $2}' "${VDR_INCLUDE_DIR}"/config.h) 349 VDRVERSION=$(awk -F'"' '/define VDRVERSION/ {print $2}' "${VDR_INCLUDE_DIR}"/config.h)
176 APIVERSION=$(awk -F'"' '/define APIVERSION/ {print $2}' "${VDR_INCLUDE_DIR}"/config.h) 350 APIVERSION=$(awk -F'"' '/define APIVERSION/ {print $2}' "${VDR_INCLUDE_DIR}"/config.h)
177 [[ -z ${APIVERSION} ]] && APIVERSION="${VDRVERSION}" 351 [[ -z ${APIVERSION} ]] && APIVERSION="${VDRVERSION}"
178 352
179 einfo "Building ${PF} against vdr-${VDRVERSION}" 353 einfo "Compiling against"
180 einfo "APIVERSION: ${APIVERSION}" 354 einfo "\tvdr-${VDRVERSION} [API version ${APIVERSION}]"
181} 355}
182 356
183vdr-plugin_src_unpack() { 357vdr-plugin_src_unpack() {
184 if [[ -z ${VDR_INCLUDE_DIR} ]]; then 358 if [[ -z ${VDR_INCLUDE_DIR} ]]; then
185 eerror "Wrong use of vdr-plugin.eclass." 359 eerror "Wrong use of vdr-plugin.eclass."
197 vdr-plugin_src_unpack add_local_patch patchmakefile i18n 371 vdr-plugin_src_unpack add_local_patch patchmakefile i18n
198 ;; 372 ;;
199 unpack) 373 unpack)
200 base_src_unpack 374 base_src_unpack
201 ;; 375 ;;
376 add_local_patch)
377 cd "${S}" || die "Could not change to plugin-source-directory!"
378 vdr_add_local_patch
379 ;;
202 patchmakefile) 380 patchmakefile)
203 if ! cd "${S}"; then
204 ewarn "There seems to be no plugin-directory with the name ${S##*/}"
205 ewarn "Perhaps you find one among these:"
206 cd "${WORKDIR}"
207 ewarn "$(/bin/ls -1 "${WORKDIR}")"
208 die "Could not change to plugin-source-directory!" 381 cd "${S}" || die "Could not change to plugin-source-directory!"
209 fi 382 vdr_patchmakefile
210
211 einfo "Patching Makefile"
212 [[ -e Makefile ]] || die "Makefile of plugin can not be found!"
213 cp Makefile "${WORKDIR}"/Makefile.before
214
215 sed -i Makefile \
216 -e '1i\#Makefile was patched by vdr-plugin.eclass'
217
218 ebegin " Setting Pathes"
219 sed -i Makefile \
220 -e "s:^VDRDIR.*$:VDRDIR = ${VDR_INCLUDE_DIR}:" \
221 -e "s:^DVBDIR.*$:DVBDIR = ${DVB_INCLUDE_DIR}:" \
222 -e "s:^LIBDIR.*$:LIBDIR = ${S}:" \
223 -e "s:^TMPDIR.*$:TMPDIR = ${T}:" \
224 -e 's:-I$(VDRDIR)/include -I$(DVBDIR)/include:-I$(DVBDIR)/include -I$(VDRDIR)/include:' \
225 -e 's:-I$(VDRDIR)/include:-I'"${VDR_INCLUDE_DIR%vdr}"':' \
226 -e 's:-I$(DVBDIR)/include:-I$(DVBDIR):'
227 eend $?
228
229 ebegin " Converting to APIVERSION"
230 sed -i Makefile \
231 -e 's:^APIVERSION = :APIVERSION ?= :' \
232 -e 's:$(LIBDIR)/$@.$(VDRVERSION):$(LIBDIR)/$@.$(APIVERSION):' \
233 -e '2i\APIVERSION = '"${APIVERSION}"
234 eend $?
235
236 ebegin " Correcting Compile-Flags"
237 # Do not overwrite CXXFLAGS, add LDFLAGS if missing
238 sed -i Makefile \
239 -e '/^CXXFLAGS[[:space:]]*=/s/=/?=/' \
240 -e '/LDFLAGS/!s:-shared:$(LDFLAGS) -shared:'
241 eend $?
242
243 ebegin " Disabling file stripping"
244 sed -i Makefile \
245 -e '/@.*strip/d' \
246 -e '/strip \$(LIBDIR)\/\$@/d' \
247 -e '/^STRIP =/d' \
248 -e '/@.*\$(STRIP)/d'
249 eend $?
250
251 # Use a file instead of an variable as single-stepping via ebuild
252 # destroys environment.
253 touch "${WORKDIR}"/.vdr-plugin_makefile_patched
254 ;;
255 add_local_patch)
256 cd "${S}"
257 if test -d "${VDR_LOCAL_PATCHES_DIR}/${PN}"; then
258 echo
259 einfo "Applying local patches"
260 for LOCALPATCH in "${VDR_LOCAL_PATCHES_DIR}/${PN}/${PV}"/*.{diff,patch}; do
261 test -f "${LOCALPATCH}" && epatch "${LOCALPATCH}"
262 done
263 fi
264 ;; 383 ;;
265 i18n) 384 i18n)
266 cd "${S}" 385 cd "${S}" || die "Could not change to plugin-source-directory!"
267 if [[ ${USE_GETTEXT} = 0 ]]; then 386 vdr_i18n
268 # Remove i18n Target if using older vdr 387 ;;
269 sed -i Makefile \
270 -e '/^all:/s/ i18n//'
271 elif [[ ${USE_GETTEXT} = 1 && ! -d po && ${NO_GETTEXT_HACK} != 1 ]]; then
272 einfo "Plugin is not yet changed for new translation system."
273 einfo "Auto converting translations to gettext"
274
275 local i18n_tool="${ROOT}/usr/share/vdr/bin/i18n-to-gettext.pl"
276 if [[ ! -x ${i18n_tool} ]]; then
277 eerror "Missing ${i18n_tool}"
278 eerror "Please re-emerge vdr"
279 die "Missing ${i18n_tool}"
280 fi
281
282 # call i18n-to-gettext tool
283 # take all texts missing tr call into special file
284 "${i18n_tool}" 2>/dev/null \
285 |sed -e '/^"/!d' \
286 -e '/^""$/d' \
287 -e 's/\(.*\)/trNOOP(\1)/' \
288 > dummy-translations-trNOOP.c
289
290 # if there were untranslated texts just run it again
291 # now the missing calls are listed in
292 # dummy-translations-trNOOP.c
293 if [[ -s dummy-translations-trNOOP.c ]]; then
294 "${i18n_tool}" &>/dev/null
295 fi
296
297 # now use the modified Makefile
298 if [[ -f Makefile.new ]]; then
299 mv Makefile.new Makefile
300 else
301 ewarn "Conversion to gettext failed. Plugin needs fixing."
302 fi
303 fi
304 esac 388 esac
305 389
306 shift 390 shift
307 done 391 done
308}
309
310vdr-plugin_copy_source_tree() {
311 pushd . >/dev/null
312 cp -r "${S}" "${T}"/source-tree
313 cd "${T}"/source-tree
314 cp "${WORKDIR}"/Makefile.before Makefile
315 sed -i Makefile \
316 -e "s:^DVBDIR.*$:DVBDIR = ${DVB_INCLUDE_DIR}:" \
317 -e 's:^CXXFLAGS:#CXXFLAGS:' \
318 -e 's:-I$(DVBDIR)/include:-I$(DVBDIR):' \
319 -e 's:-I$(VDRDIR) -I$(DVBDIR):-I$(DVBDIR) -I$(VDRDIR):'
320 popd >/dev/null
321}
322
323vdr-plugin_install_source_tree() {
324 einfo "Installing sources"
325 destdir="${VDRSOURCE_DIR}/vdr-${VDRVERSION}/PLUGINS/src/${VDRPLUGIN}"
326 insinto "${destdir}-${PV}"
327 doins -r "${T}"/source-tree/*
328
329 dosym "${VDRPLUGIN}-${PV}" "${destdir}"
330} 392}
331 393
332vdr-plugin_src_compile() { 394vdr-plugin_src_compile() {
333 [ -z "$1" ] && vdr-plugin_src_compile prepare compile 395 [ -z "$1" ] && vdr-plugin_src_compile prepare compile
334 396
384 446
385 cd "${S}" 447 cd "${S}"
386 insinto "${VDR_PLUGIN_DIR}" 448 insinto "${VDR_PLUGIN_DIR}"
387 doins libvdr-*.so.* 449 doins libvdr-*.so.*
388 450
389 if [[ ${USE_GETTEXT} = 1 && -d ${TMP_LOCALE_DIR} ]]; then 451 if vdr_has_gettext && [[ -d ${TMP_LOCALE_DIR} ]]; then
390 einfo "Installing locales" 452 einfo "Installing locales"
391 cd "${TMP_LOCALE_DIR}" 453 cd "${TMP_LOCALE_DIR}"
392 insinto "${LOCDIR}" 454 insinto "${LOCDIR}"
393 doins -r * 455 doins -r *
394 fi 456 fi
417 479
418 create_header_checksum_file 480 create_header_checksum_file
419 create_plugindb_file 481 create_plugindb_file
420} 482}
421 483
422vdr-plugin_print_enable_command() {
423 elog
424 elog "To activate this vdr-plugin execute the following command:"
425 elog "\teselect vdr-plugin enable ${PN#vdr-}"
426 elog
427}
428
429vdr-plugin_pkg_postinst() { 484vdr-plugin_pkg_postinst() {
430 vdr-plugin_print_enable_command 485 vdr-plugin_print_enable_command
431 486
432 if [[ -n "${VDR_CONFD_FILE}" ]]; then 487 if [[ -n "${VDR_CONFD_FILE}" ]]; then
433 elog "Please have a look at the config-file" 488 elog "Please have a look at the config-file"
438 493
439vdr-plugin_pkg_postrm() { 494vdr-plugin_pkg_postrm() {
440 delete_orphan_plugindb_file 495 delete_orphan_plugindb_file
441} 496}
442 497
443vdr-plugin_pkg_config_legacy() {
444 elog "Using old interface to gentoo-vdr-scripts-0.3.7"
445 if [[ -z "${INSTALLPLUGIN}" ]]; then
446 INSTALLPLUGIN="${VDRPLUGIN}"
447 fi
448
449 active=0
450 # First test if plugin is already inside PLUGINS
451 local conf=/etc/conf.d/vdr.plugins
452 exec 3<${conf}
453 while read -u 3 line; do
454 [[ ${line} == "" ]] && continue
455 [[ ${line:0:1} == "#" ]] && continue
456 set -- ${line}
457 [[ ${1} == ${INSTALLPLUGIN} ]] && active=1
458 done
459 exec 3<&-
460
461 if [[ $active == 0 ]]; then
462 elog "Adding ${INSTALLPLUGIN} to active plugins."
463
464 # The pure edit process.
465 echo "${INSTALLPLUGIN}" >> "${conf}"
466 else
467 elog "${INSTALLPLUGIN} already activated"
468 echo
469 read -p "Do you want to deactivate ${INSTALLPLUGIN} (yes/no) " answer
470 if [[ "${answer}" != "yes" ]]; then
471 elog "aborted"
472 return
473 fi
474 elog "Removing ${INSTALLPLUGIN} from active plugins."
475
476 # The pure edit process
477 sed -i "${conf}" -e "/^[[:space:]]*${INSTALLPLUGIN}[[:space:]]*\$/d"
478 fi
479}
480
481vdr-plugin_pkg_config() { 498vdr-plugin_pkg_config() {
482 ewarn "emerge --config ${PN} is no longer supported" 499 ewarn "emerge --config ${PN} is no longer supported"
483 vdr-plugin_print_enable_command 500 vdr-plugin_print_enable_command
484} 501}
485 502
486fix_vdr_libsi_include()
487{
488 einfo "Fixing include of libsi-headers"
489 local f
490 for f; do
491 sed -i "${f}" \
492 -e '/#include/s:"\(.*libsi.*\)":<\1>:' \
493 -e '/#include/s:<.*\(libsi/.*\)>:<vdr/\1>:'
494 done
495}
496
497EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_install pkg_postinst pkg_postrm pkg_config 503EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_install pkg_postinst pkg_postrm pkg_config

Legend:
Removed from v.1.54  
changed lines
  Added in v.1.59

  ViewVC Help
Powered by ViewVC 1.1.20