diff options
author | Joerg Bornkessel <hd_brummy@gentoo.org> | 2015-01-20 03:19:54 +0000 |
---|---|---|
committer | Joerg Bornkessel <hd_brummy@gentoo.org> | 2015-01-20 03:19:54 +0000 |
commit | 2cfdaf6593a05fc0d600108f6b17bb4ab6fd8614 (patch) | |
tree | 44da5d8d4ef85c4d327cd48c649dea9f490ae9ab /media-video/vdr | |
parent | Remove unnecessary bcat tool (see bug #418301). (diff) | |
download | historical-2cfdaf6593a05fc0d600108f6b17bb4ab6fd8614.tar.gz historical-2cfdaf6593a05fc0d600108f6b17bb4ab6fd8614.tar.bz2 historical-2cfdaf6593a05fc0d600108f6b17bb4ab6fd8614.zip |
added better systemd support, backported from vdr-2.1.7, based on patch by Lucian Muresan
Package-Manager: portage-2.2.15/cvs/Linux x86_64
Manifest-Sign-Key: 0x34C2808A
Diffstat (limited to 'media-video/vdr')
-rw-r--r-- | media-video/vdr/ChangeLog | 10 | ||||
-rw-r--r-- | media-video/vdr/Manifest | 12 | ||||
-rw-r--r-- | media-video/vdr/files/vdr-2.0.6-r2_gentoo.patch | 73 | ||||
-rw-r--r-- | media-video/vdr/files/vdr-2.0.6_systemd_argsdir.patch | 441 | ||||
-rw-r--r-- | media-video/vdr/files/vdr-2.0.6_systemd_argsdir_vanilla.patch | 439 | ||||
-rw-r--r-- | media-video/vdr/vdr-2.0.6-r2.ebuild | 289 |
6 files changed, 1259 insertions, 5 deletions
diff --git a/media-video/vdr/ChangeLog b/media-video/vdr/ChangeLog index f971cd4c551e..630bbe70750b 100644 --- a/media-video/vdr/ChangeLog +++ b/media-video/vdr/ChangeLog @@ -1,6 +1,14 @@ # ChangeLog for media-video/vdr # Copyright 1999-2015 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/media-video/vdr/ChangeLog,v 1.185 2015/01/04 01:19:02 hd_brummy Exp $ +# $Header: /var/cvsroot/gentoo-x86/media-video/vdr/ChangeLog,v 1.186 2015/01/20 03:19:46 hd_brummy Exp $ + +*vdr-2.0.6-r2 (20 Jan 2015) + + 20 Jan 2015; Joerg Bornkessel <hd_brummy@gentoo.org> +vdr-2.0.6-r2.ebuild, + +files/vdr-2.0.6-r2_gentoo.patch, +files/vdr-2.0.6_systemd_argsdir.patch, + +files/vdr-2.0.6_systemd_argsdir_vanilla.patch: + added better systemd support, backported from vdr-2.1.7, based on patch by + Lucian Muresan 04 Jan 2015; Joerg Bornkessel <hd_brummy@gentoo.org> vdr-2.0.4.ebuild, vdr-2.0.5.ebuild, vdr-2.0.6-r1.ebuild: diff --git a/media-video/vdr/Manifest b/media-video/vdr/Manifest index e6ffec9cc72f..30c3f28dfda3 100644 --- a/media-video/vdr/Manifest +++ b/media-video/vdr/Manifest @@ -4,7 +4,10 @@ Hash: SHA256 AUX channel_alternative.conf 332 SHA256 30fb0a5147c01429c2813505cc69658cf1bfa1b70537bce07365017f653be5ce SHA512 738de5d5d99b54a516f41683834509b477590732db4e00b13b2f26e22c7349cb8517965a21251c08d29b0f368b2bb3fa64a1de71da09ffbedc5a401314a0eb5d WHIRLPOOL 96ead1c37c9e88e6593536a2182b813d3ae86c8e55e79a4cc5ff2d29ec0694405d26c82cb2295bb3f1e7e61c0ec93a646acc518e35ed6eff4d66c9219cc35677 AUX vdr-2.0.0-fixkeeptracksinit.diff 518 SHA256 5d93c9fbf4fe6cfe0087f78e4cdf945a5307d5e03045cc34705be14a9b3db63e SHA512 31097b29c11bc2fc3246de44030a050bdeb195d40680b29a6aeaf072362687709d65e02c9676d08d1817b57ac5fde84fbf59261514a7ccb7d8c62eb27ff92310 WHIRLPOOL fca0e756ec4ef2b99c064385fda2b96165559d47901955bd3f7ba6b09e7e529dfbd25ec6a04d96807401c12f914f067c7ce3905f864ed3c5e03cd4c4040a7796 AUX vdr-2.0.0_gentoo.patch 2488 SHA256 25275f22d8d183c089accd9463862aa772d2c13ae18c4f5769916c06b4b5918e SHA512 a36d8be52e7815165327e7322ce5f5537243a3cedc7b5e695ecddce567e8536cb44724540e5079fcda90f58a95f6fb26de4d1cc2842ce8d5460e4010623042f0 WHIRLPOOL 0885af205152ff2228bde0799a05c02efdb7fc712d740a640eecaff6296c7df1285883460e1dd452f0dbc6b4621ddcb0a7c89a21cc241a935f7b7526d2f852f5 +AUX vdr-2.0.6-r2_gentoo.patch 2518 SHA256 02f20c8bcf0c0d686fbaad19a76025db6e5bed00ee0f191c2096533d42554d38 SHA512 01416b5825595d5a8c813297dd1791978f0d4ffe1b06d2254772c3dc2d76d0c09720ada64dc332df156196d73b8500ae1dcdb08d95502a8c940baf4590ece545 WHIRLPOOL 1fdeb47b5919d96f729a79185c020b8d0a49866a6b28c0296859eb671da30f49085c62c803853209f98b405466c0cc684e9d673c5f7713cadfd2c1d96e32802b AUX vdr-2.0.6_gentoo.patch 2255 SHA256 486b513f8ab723685e72b041b546d1cda799f743ef8020f5742aefee7a1b1660 SHA512 7bb087d2f362e28700a6f22b2649bd61742a7967344f0132abaaa2ae30d4aef3e9a7afd06d80d2a4a97248abfa273cb5d7e20e419c8409a5a83744fd043fb7e9 WHIRLPOOL 20f1b870305e55d4c2cfc2fad0968b6232b22585218a60378aa95bb420228e0704a2b42699daff84a36f92d4b2937a1ada9db5514a0789f5c47b66001a9ed1ed +AUX vdr-2.0.6_systemd_argsdir.patch 15150 SHA256 acb1fd7513701e6aeded9a31486ca727921c3028d1ecff5f66ad15f3974433be SHA512 b8ae2e76476665a4a747677c5a34508da565373d5064b69ba9136fb59d0f2c4d7f213e441b03b09081e2ece9aa20feae1db78b304968717d9f88fea2a0c57c18 WHIRLPOOL 7b107e85cb5cb747eb1d3546d4cec83ccc6c0f58cb850d022453ea2a838461bbf1fe69a9fdbcf682bd0bab3dbb44f7d20bc6475ab9b3b4807d60766ffc2216c3 +AUX vdr-2.0.6_systemd_argsdir_vanilla.patch 15043 SHA256 7809d04f7653ae880a4d5313ae404ed1ac46742fff86c2a91b3a843503e6d7c5 SHA512 ca478ab0a69791aeb99965f85623e9efd19ee918d8dd3cf4b627855c7f3a01d55a655cf1306c3552b044153ebfc0c2615a6eeab6a72943386c666aae88c7d02d WHIRLPOOL c79b67b8bb60cdf58e6919092b4149b62c998971f9ade6734b35a1706ad18039d1876f92e99d5d4b1ffdc23d48a58c854df46ca17e152138f1cdf4504490529c DIST extpng-vdr-2.0.4-gentoo-edition-v1.patch.bz2 66092 SHA256 4da8573ee8ad6d5524563e805591407774c4cc7aa10d92ccbff3efa90473b795 SHA512 42c4f488f7cc28491e0652a923fd2e49cad9e749261c0907f1911d5e377009e9ff0adbb1f9385a6a00151ec6934d1e6fd38fc8356d2811abc827df775171469c WHIRLPOOL 012f63ce69a949aedba091f88cc8bce04352d45ba962c55522849003c020072295405cef9813af41bb15af0d30b006eb1b9b1fb149b3b948e89b40d4f32b710e DIST extpng-vdr-2.0.6-gentoo-edition-v6.patch.bz2 69472 SHA256 f2ea1371b88898acfde5fa390f5b13a5c23065a877bbba5658a194e64d6553e5 SHA512 f4ecb786ec5a026fa75fcf539518e80273bf43fc325c13a380c70eb85351910efa991b3ee71ca477e597bc2b4598a18620b6cf00fc02714acfcc4e6112d84b6c WHIRLPOOL 13bb3697afa4b2665d9de3de8892a0baf877991642a94d3305e15d98cbcba73aa743f80bdd76f9a3297653c92e99ec6ae629ed7919c26c730cef2fa2fd608ef1 DIST vdr-2.0.4.tar.bz2 836834 SHA256 4c1ab2e7fa01c95ff83feec7601ad7241a256f05f7d15ef1d79b5b84b84f9ea3 SHA512 b64bbb61eb049b5f34c351b1ca0d77a93830dd8ca6fdec81becbc3be01f833512852c59e7e5290708d9f7b9bfb46d573d269300ffd025cc791263ff7323a632b WHIRLPOOL 113542272970fa1413b8ec296445eb198e319bba5dfa0c24a0e193afffff3cdcca563ae98c2b2bc4d49d779f401ba93c1e3aa0268f2a10d2b495e3e5d4be9c00 @@ -13,13 +16,14 @@ DIST vdr-2.0.6.tar.bz2 839575 SHA256 c33c6431726378d5af575d8cfcacd34a50d17334e09 EBUILD vdr-2.0.4.ebuild 10145 SHA256 4a22d9a50cf15d92f2f8bbf1d0a511654b61435ba929c64fee2a3adc63fbde78 SHA512 fbecc47bcf100d6ed154baf4dcaf9dc36cd09c5d424f6c3a3b14662ed58fa5d43ef9faa536c79647243e14a6b0ac78f9498568ab9889d763a8f514c14e302cce WHIRLPOOL 81285d82c67ad3323e7f5f537de4b6f43dbcd3b8b95913dd446c2e8911014430b3937c0b06a17b5ac7bca8d63d6f06cf390afdeb69b73fa18429745b511ca507 EBUILD vdr-2.0.5.ebuild 10417 SHA256 9539c4edf89eb6365f0f689b07ba29abbc460ac06e4e6ca3560de48ba90cb187 SHA512 f496adf10f44aded1183888520f9dc6cd4d9cc0603052d84caa294c9fbdb3436163d73c32ae1295e86ff6cfab1246cbb28f78ff9b687e15608d427bf7b37c9c8 WHIRLPOOL 1956eecf3e7266338310c813da03456b7abcd630864f6ef666078fe8e0491698276fcac05a2f9ea91148211daed957644b75c84cdcb8556d75d0320e961adfc3 EBUILD vdr-2.0.6-r1.ebuild 7033 SHA256 a4f3348ede1074a89cf8882b06799e5b21c5d7472d888cfa69130136a848cecc SHA512 9af41f622e10bcf73e194235d55a6b1aaab8cbb015bce9f47b5bbb0d7e7572a9480e878fb9f5ea58a87efc90478826693050d7af0d8c26d11e67111e9dc62699 WHIRLPOOL 42f8bf821e454cfdf5bef14f2ee3a97194215aa3e261bf776001186c8328fa52e3765e80109aecf393f42726923af9763f29ef39f76ec31f304980bf52b58cde -MISC ChangeLog 33867 SHA256 c02210a3a3e40a67e7b36ed6615f01c6a09e592417e1ed7ab315a89d7eab8d15 SHA512 8c7356ab5975e001b6417071d6ce9ffe73f62eafce46d2149be1402c30e0ee4d3e039942896fcc84e4bab41a9f220ec940ce9786149aafcc288131cf40a0eebe WHIRLPOOL 71eb705f5977310147fee16dfba1dae345af472ad2eb789ca7075fe2bfe99f41a26d22ce4892ec6584ea6b800756be06b14da795b7ea4763d3105efe7e7af62f +EBUILD vdr-2.0.6-r2.ebuild 7371 SHA256 73c624373e1ea076d8e818cf475d6f442fd5ba083ff2ccee3a73af75210c0089 SHA512 58a62709b8c04531ddde0f303f1aeded50c1f831a3b41c7adae8f56df710e493a6d0ea40ac6722f9d62c30c0c5446ce3b8f473b9ec3551273dc622240b20c824 WHIRLPOOL d13ef7bb693d8875a727631ab1f809ed312e2ca55661e375d10fd95a4d19331091b70a9d90cb8216ea559a3a92e7ffe164ce3be8fbc1447546e4ee613bdfe357 +MISC ChangeLog 34194 SHA256 59b701496163e98b14ecabf560df4f112266bc2aa878faba9a2787f7ff4cc05d SHA512 88d3ddec0b448fb1300b4ca6635b01cb78a946f5c5ed10f41f21534ac8a674fbba349fcc2575bd44623363935717dc0624647855793fa088b0a0dd707874f76d WHIRLPOOL c4a77cbf09f94d6eaca2d69425e3722614890016df705eddf57812821aa1b90e0c85f9c2a51d7674620c3241852356b81d0ff23c7cd0e6df40459d8fb2f2fa1c MISC metadata.xml 1903 SHA256 67ce8ca779246b6ed429cbe57b1e2958ba6c77b9bf10ee84a3d1c3757920e858 SHA512 9c4a995e63b07f0970ced63798cd813009e961eb85419c441dc75e242dd81f041aba650a5c2d01991dd7bbc678964f4cd94f6f551678b66850754e5df37ba826 WHIRLPOOL 20311208a56f5adde18ac157aa61c8a0cfcc10d31cf90590d8ebdca0db8b737bbdc41e4bdbe21f139e9ec15cd1d95f7617194884c99d1ba9f13f3868fe8d4531 -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.22 (GNU/Linux) Comment: added by hd_brummy@gentoo.org -iD8DBQFUqJUMdn07HTTCgIoRCBPpAJwLMHy3RXKMANqp2rcWqfwcKtIaOwCgqXQJ -NhKuK8OeUIwz2amZOvfqBbs= -=uvkw +iD8DBQFUvclXdn07HTTCgIoRCIi3AJ9RyCnWEiQxZovniNjdWIFAeOPP1ACgpBXD +G4ZgxlYMGqf+uUd07ZeAHy0= +=SdMM -----END PGP SIGNATURE----- diff --git a/media-video/vdr/files/vdr-2.0.6-r2_gentoo.patch b/media-video/vdr/files/vdr-2.0.6-r2_gentoo.patch new file mode 100644 index 000000000000..516bb7b7254f --- /dev/null +++ b/media-video/vdr/files/vdr-2.0.6-r2_gentoo.patch @@ -0,0 +1,73 @@ +disabled plugin install from vdr source, we dont support this way +patch to support LINGUAS variable +fixed install on multicore cpu, creating CONFDIR on later time +install libsi includes in own dir +Signed-of-by: Joerg Bornkessel <hd_brummy@gentoo.org> 20/Jan/2015 +diff -Naur vdr-2.0.6.orig/Makefile vdr-2.0.6/Makefile +--- vdr-2.0.6.orig/Makefile 2014-09-22 22:17:23.000000000 +0200 ++++ vdr-2.0.6/Makefile 2014-09-24 15:22:43.000000000 +0200 +@@ -109,7 +109,7 @@ + VDRVERSION = $(shell sed -ne '/define VDRVERSION/s/^.*"\(.*\)".*$$/\1/p' config.h) + APIVERSION = $(shell sed -ne '/define APIVERSION/s/^.*"\(.*\)".*$$/\1/p' config.h) + +-all: vdr i18n plugins ++all: vdr i18n + + # Implicit rules: + +@@ -162,7 +162,7 @@ + + PODIR = po + LOCALEDIR = locale +-I18Npo = $(wildcard $(PODIR)/*.po) ++I18Npo = $(foreach dir,$(LINGUAS),$(wildcard $(PODIR)/$(dir)*.po)) + I18Nmo = $(addsuffix .mo, $(foreach file, $(I18Npo), $(basename $(file)))) + I18Nmsgs = $(addprefix $(LOCALEDIR)/, $(addsuffix /LC_MESSAGES/vdr.mo, $(notdir $(foreach file, $(I18Npo), $(basename $(file)))))) + I18Npot = $(PODIR)/vdr.pot +@@ -185,7 +185,7 @@ + + install-i18n: i18n + @mkdir -p $(DESTDIR)$(LOCDIR) +- cp -r $(LOCALEDIR)/* $(DESTDIR)$(LOCDIR) ++ @(cd $(LOCALEDIR); for linguas in $(LINGUAS); do [ "$$linguas" = "en" ] && continue; cp -r --parents $$linguas* $(DESTDIR)$(LOCDIR); done) + + # The 'include' directory (for plugins): + +@@ -247,7 +247,7 @@ + + # Install the files (note that 'install-pc' must be first!): + +-install: install-pc install-bin install-dirs install-conf install-doc install-plugins install-i18n install-includes ++install: install-pc install-bin install-dirs install-conf install-doc install-i18n install-includes + + # VDR binary: + +@@ -259,11 +259,12 @@ + + install-dirs: + @mkdir -p $(DESTDIR)$(VIDEODIR) +- @mkdir -p $(DESTDIR)$(CONFDIR) +- @mkdir -p $(DESTDIR)$(CACHEDIR) ++# @mkdir -p $(DESTDIR)$(CONFDIR) ++# @mkdir -p $(DESTDIR)$(CACHEDIR) + @mkdir -p $(DESTDIR)$(RESDIR) + + install-conf: ++ @mkdir -p $(DESTDIR)$(CONFDIR) + @cp -pn *.conf $(DESTDIR)$(CONFDIR) + + # Documentation: +@@ -290,8 +291,11 @@ + # Includes: + + install-includes: include-dir +- @mkdir -p $(DESTDIR)$(INCDIR) +- @cp -pLR include/vdr include/libsi $(DESTDIR)$(INCDIR) ++# @mkdir -p $(DESTDIR)$(INCDIR) ++# @cp -pLR include/vdr include/libsi $(DESTDIR)$(INCDIR) ++ @mkdir -p $(DESTDIR)$(INCDIR)/vdr $(DESTDIR)$(INCDIR)/vdr/libsi ++ @cp -pLR include/vdr $(DESTDIR)$(INCDIR) ++ @cp -pLR include/libsi Make.config $(DESTDIR)$(INCDIR)/vdr + + # pkg-config file: + diff --git a/media-video/vdr/files/vdr-2.0.6_systemd_argsdir.patch b/media-video/vdr/files/vdr-2.0.6_systemd_argsdir.patch new file mode 100644 index 000000000000..39e7ec24f96d --- /dev/null +++ b/media-video/vdr/files/vdr-2.0.6_systemd_argsdir.patch @@ -0,0 +1,441 @@ +packport from vdr-2.1.7 +systemd support +argsdir support +diff -Naur vdr-2.0.6.orig/HISTORY vdr-2.0.6/HISTORY +--- vdr-2.0.6.orig/HISTORY 2015-01-20 03:24:14.000000000 +0100 ++++ vdr-2.0.6/HISTORY 2015-01-20 03:26:04.000000000 +0100 +@@ -7915,3 +7915,13 @@ + on a system with a large number of recordings. + - The APIVERSION has been increased to 2.0.6 due to the changes to pat.h, sdt.h and + the functional modification to cFont::CreateFont(). ++ ++2015-01-18: Version 2.0.6 + backport of systemd support from versions 2.1.6 and 2.1.7 ++ ++- Added support for systemd (thanks to Christopher Reimer). To activate this you ++ need to add "SDNOTIFY=1" to the 'make' call. ++ ++2015-01-18: Version 2.0.6 + backport of reading command line arguments from files, from version 2.1.7 ++ ++- VDR now reads command line options from *.conf files in /etc/vdr/conf.d (thanks ++ to Lars Hanisch). See vdr.1 and vdr.5 for details. +diff -Naur vdr-2.0.6.orig/Make.config.template vdr-2.0.6/Make.config.template +--- vdr-2.0.6.orig/Make.config.template 2015-01-20 03:24:14.000000000 +0100 ++++ vdr-2.0.6/Make.config.template 2015-01-20 03:26:04.000000000 +0100 +@@ -38,6 +38,7 @@ + + #VIDEODIR = /srv/vdr/video + #CONFDIR = /var/lib/vdr ++#ARGSDIR = /etc/vdr/conf.d + #CACHEDIR = /var/cache/vdr + + # Overrides for preset/legacy configurations: +diff -Naur vdr-2.0.6.orig/Makefile vdr-2.0.6/Makefile +--- vdr-2.0.6.orig/Makefile 2015-01-20 03:24:14.000000000 +0100 ++++ vdr-2.0.6/Makefile 2015-01-20 03:26:04.000000000 +0100 +@@ -31,6 +31,7 @@ + DESTDIR ?= + VIDEODIR ?= /srv/vdr/video + CONFDIR ?= /var/lib/vdr ++ARGSDIR ?= /etc/vdr/conf.d + CACHEDIR ?= /var/cache/vdr + + PREFIX ?= /usr/local +@@ -66,7 +67,7 @@ + + SILIB = $(LSIDIR)/libsi.a + +-OBJS = audio.o channels.o ci.o config.o cutter.o device.o diseqc.o dvbdevice.o dvbci.o\ ++OBJS = args.o audio.o channels.o ci.o config.o cutter.o device.o diseqc.o dvbdevice.o dvbci.o\ + dvbplayer.o dvbspu.o dvbsubtitle.o eit.o eitscan.o epg.o filter.o font.o i18n.o interface.o keys.o\ + lirc.o menu.o menuitems.o nit.o osdbase.o osd.o pat.o player.o plugin.o\ + receiver.o recorder.o recording.o remote.o remux.o ringbuffer.o sdt.o sections.o shutdown.o\ +@@ -111,12 +112,18 @@ + DEFINES += -DBIDI + LIBS += $(shell pkg-config --libs fribidi) + endif ++ifdef SDNOTIFY ++INCLUDES += $(shell pkg-config --cflags libsystemd-daemon) ++DEFINES += -DSDNOTIFY ++LIBS += $(shell pkg-config --libs libsystemd-daemon) ++endif + + LIRC_DEVICE ?= /var/run/lirc/lircd + + DEFINES += -DLIRC_DEVICE=\"$(LIRC_DEVICE)\" + DEFINES += -DVIDEODIR=\"$(VIDEODIR)\" + DEFINES += -DCONFDIR=\"$(CONFDIR)\" ++DEFINES += -DARGSDIR=\"$(ARGSDIR)\" + DEFINES += -DCACHEDIR=\"$(CACHEDIR)\" + DEFINES += -DRESDIR=\"$(RESDIR)\" + DEFINES += -DPLUGINDIR=\"$(LIBDIR)\" +@@ -161,6 +168,8 @@ + @echo "mandir=$(MANDIR)" >> $@ + @echo "configdir=$(CONFDIR)" >> $@ + @echo "videodir=$(VIDEODIR)" >> $@ ++# @echo "configdir=$(CONFDIR)" >> $@ ++ @echo "argsdir=$(ARGSDIR)" >> $@ + @echo "cachedir=$(CACHEDIR)" >> $@ + @echo "resdir=$(RESDIR)" >> $@ + @echo "libdir=$(LIBDIR)" >> $@ +@@ -278,6 +287,7 @@ + install-dirs: + @mkdir -p $(DESTDIR)$(VIDEODIR) + # @mkdir -p $(DESTDIR)$(CONFDIR) ++ @mkdir -p $(DESTDIR)$(ARGSDIR) + # @mkdir -p $(DESTDIR)$(CACHEDIR) + @mkdir -p $(DESTDIR)$(RESDIR) + +diff -Naur vdr-2.0.6.orig/Makefile.orig vdr-2.0.6/Makefile.orig +diff -Naur vdr-2.0.6.orig/args.c vdr-2.0.6/args.c +--- vdr-2.0.6.orig/args.c 1970-01-01 01:00:00.000000000 +0100 ++++ vdr-2.0.6/args.c 2015-01-20 03:26:04.000000000 +0100 +@@ -0,0 +1,129 @@ ++/* ++ * args.c: Read arguments from files ++ * ++ * See the main source file 'vdr.c' for copyright information and ++ * how to reach the author. ++ * ++ * Original version written by Lars Hanisch <dvb@flensrocker.de>. ++ * ++ * $Id: vdr-2.0.6_systemd_argsdir.patch,v 1.1 2015/01/20 03:19:46 hd_brummy Exp $ ++ */ ++ ++#include "args.h" ++#include <unistd.h> ++ ++cArgs::cArgs(const char *Argv0) ++{ ++ argv0 = Argv0; ++ argc = 0; ++ argv = NULL; ++} ++ ++cArgs::~cArgs(void) ++{ ++ if (argv != NULL) ++ delete [] argv; ++} ++ ++bool cArgs::AddArg(const char *s) ++{ ++ if (inVdrSection) ++ args.Append(strdup(s)); ++ else if (*lastArg == NULL) ++ return false; ++ else ++ lastArg = cString::sprintf("%s %s", *lastArg, s); ++ return true; ++} ++ ++bool cArgs::ReadDirectory(const char *Directory) ++{ ++ if (argv != NULL) ++ delete [] argv; ++ argc = 0; ++ argv = NULL; ++ args.Clear(); ++ lastArg = NULL; ++ inVdrSection = false; ++ cFileNameList files(Directory, false); ++ if (files.Size() == 0) ++ return false; ++ for (int i = 0; i < files.Size(); i++) { ++ const char *fileName = files.At(i); ++ if (startswith(fileName, ".") || !endswith(fileName, ".conf")) ++ continue; ++ cString fullFileName = AddDirectory(Directory, fileName); ++ struct stat fs; ++ if ((access(*fullFileName, F_OK) != 0) || (stat(*fullFileName, &fs) != 0) || S_ISDIR(fs.st_mode)) ++ continue; ++ bool ok = true; ++ int line = 0; ++ FILE *f = fopen(*fullFileName, "r"); ++ if (f) { ++ char *s; ++ cReadLine ReadLine; ++ while ((s = ReadLine.Read(f)) != NULL) { ++ line++; ++ s = stripspace(skipspace(s)); ++ if (!isempty(s) && (s[0] != '#')) { ++ if (startswith(s, "[") && endswith(s, "]")) { ++ s[strlen(s) - 1] = 0; ++ s++; ++ if (*lastArg) { ++ args.Append(strdup(*lastArg)); ++ lastArg = NULL; ++ } ++ if (strcmp(s, "vdr") == 0) ++ inVdrSection = true; ++ else { ++ inVdrSection = false; ++ lastArg = cString::sprintf("--plugin=%s", s); ++ } ++ } ++ else { ++ if ((strlen(s) > 2) && (s[0] == '-') && (s[1] != '-')) { // short option, split at first space ++ char *p = strchr(s, ' '); ++ if (p == NULL) { ++ ok = AddArg(s); ++ if (!ok) ++ break; ++ } ++ else { ++ *p = 0; ++ p++; ++ ok = AddArg(s); ++ if (!ok) ++ break; ++ ok = AddArg(p); ++ if (!ok) ++ break; ++ } ++ } ++ else { ++ ok = AddArg(s); ++ if (!ok) ++ break; ++ } ++ } ++ } ++ } ++ fclose(f); ++ } ++ if (!ok) { ++ esyslog("ERROR: args file %s, line %d", *fullFileName, line); ++ return false; ++ } ++ } ++ if (*lastArg) { ++ args.Append(strdup(*lastArg)); ++ lastArg = NULL; ++ } ++ argv = new char*[args.Size() + 1]; ++ argv[0] = strdup(*argv0); ++ argc = 1; ++ for (int i = 0; i < args.Size(); i++) { ++ argv[argc] = args.At(i); ++ argc++; ++ } ++ return true; ++} +diff -Naur vdr-2.0.6.orig/args.h vdr-2.0.6/args.h +--- vdr-2.0.6.orig/args.h 1970-01-01 01:00:00.000000000 +0100 ++++ vdr-2.0.6/args.h 2015-01-20 03:26:04.000000000 +0100 +@@ -0,0 +1,34 @@ ++/* ++ * args.h: Read arguments from files ++ * ++ * See the main source file 'vdr.c' for copyright information and ++ * how to reach the author. ++ * ++ * Original version written by Lars Hanisch <dvb@flensrocker.de>. ++ * ++ * $Id: vdr-2.0.6_systemd_argsdir.patch,v 1.1 2015/01/20 03:19:46 hd_brummy Exp $ ++ */ ++ ++#ifndef __ARGS_H ++#define __ARGS_H ++ ++#include "tools.h" ++ ++class cArgs { ++private: ++ cString argv0; ++ cStringList args; ++ cString lastArg; ++ bool inVdrSection; ++ int argc; ++ char **argv; ++ bool AddArg(const char *s); ++public: ++ cArgs(const char *Argv0); ++ ~cArgs(void); ++ bool ReadDirectory(const char *Directory); ++ int GetArgc(void) const { return argc; }; ++ char **GetArgv(void) const { return argv; }; ++ }; ++ ++#endif //__ARGS_H +diff -Naur vdr-2.0.6.orig/interface.c vdr-2.0.6/interface.c +--- vdr-2.0.6.orig/interface.c 2015-01-20 03:24:14.000000000 +0100 ++++ vdr-2.0.6/interface.c 2015-01-20 03:25:53.000000000 +0100 +@@ -10,6 +10,9 @@ + #include "interface.h" + #include <ctype.h> + #include <stdlib.h> ++#ifdef SDNOTIFY ++#include <systemd/sd-daemon.h> ++#endif + #include <unistd.h> + #include "i18n.h" + #include "status.h" +@@ -159,6 +162,9 @@ + bool known = Keys.KnowsRemote(Remote->Name()); + dsyslog("remote control %s - %s", Remote->Name(), known ? "keys known" : "learning keys"); + if (!known) { ++#ifdef SDNOTIFY ++ sd_notify(0, "READY=1\nSTATUS=Learning keys..."); ++#endif + cSkinDisplayMenu *DisplayMenu = Skins.Current()->DisplayMenu(); + DisplayMenu->SetMenuCategory(mcUnknown); + char Headline[256]; +diff -Naur vdr-2.0.6.orig/vdr.1 vdr-2.0.6/vdr.1 +--- vdr-2.0.6.orig/vdr.1 2015-01-20 03:24:14.000000000 +0100 ++++ vdr-2.0.6/vdr.1 2015-01-20 03:26:04.000000000 +0100 +@@ -178,6 +178,10 @@ + Read resource files from \fIdir\fR + (default is to read them from the config directory). + .TP ++.BI \-\-showargs[= dir ] ++Read command line arguments from \fIdir\fR (default is \fI/etc/vdr/conf.d\fR), ++display them to the console and exit. ++.TP + .BI \-s\ cmd ,\ \-\-shutdown= cmd + Call \fIcmd\fR to shutdown the computer. See the file \fIINSTALL\fR for more + information. +@@ -213,6 +217,10 @@ + .BI \-w\ sec ,\ \-\-watchdog= sec + Activate the watchdog timer with a timeout of \fIsec\fR seconds. + A value of \fB0\fR (default) disables the watchdog. ++.P ++If started without any options, vdr tries to read command line options ++from files named '*.conf' in the directory /etc/vdr/conf.d. Files are ++read in alphabetical order. See vdr(5) for details. + .SH SIGNALS + .TP + .B SIGINT, SIGTERM +diff -Naur vdr-2.0.6.orig/vdr.5 vdr-2.0.6/vdr.5 +--- vdr-2.0.6.orig/vdr.5 2015-01-20 03:24:14.000000000 +0100 ++++ vdr-2.0.6/vdr.5 2015-01-20 03:26:04.000000000 +0100 +@@ -895,6 +895,33 @@ + just 16 bit wide. The internal representation in VDR allows for 32 bit to + be used, so that external tools can generate EPG data that is guaranteed + not to collide with the ids of existing data. ++.SS COMMANDLINE OPTIONS ++If started without any options, vdr tries to read any files in the directory ++/etc/vdr/conf.d with names that do not begin with a '.' and that end with '.conf'. ++These files are read in alphabetical order. The format of these files is ++ ++# comment ++.br ++[name] ++.br ++-a ++.br ++-b 123 ++.br ++--long ++.br ++--longarg=123 ++.br ++ ++Any lines that begin with '#' as the first non-whitespace character are considered ++comments and are ignored. ++A command line option file consists of one or more sections, indicated by '[name]', ++where 'name' is either the fixed word 'vdr' (if this section contains options for ++the main VDR program) or the name of the plugin this section applies to. ++Each option must be written on a separate line, including the leading '-' (for ++a short option) or '--' (for a long option). If the option has additional arguments, ++they have to be written on the same line as the option itself, separated from the ++option with a blank (short option) or equal sign (long option). + .SH SEE ALSO + .BR vdr (1) + .SH AUTHOR +diff -Naur vdr-2.0.6.orig/vdr.c vdr-2.0.6/vdr.c +--- vdr-2.0.6.orig/vdr.c 2015-01-20 03:24:14.000000000 +0100 ++++ vdr-2.0.6/vdr.c 2015-01-20 03:26:04.000000000 +0100 +@@ -34,8 +34,12 @@ + #include <stdlib.h> + #include <sys/capability.h> + #include <sys/prctl.h> ++#ifdef SDNOTIFY ++#include <systemd/sd-daemon.h> ++#endif + #include <termios.h> + #include <unistd.h> ++#include "args.h" + #include "audio.h" + #include "channels.h" + #include "config.h" +@@ -192,6 +196,7 @@ + #define DEFAULTWATCHDOG 0 // seconds + #define DEFAULTVIDEODIR VIDEODIR + #define DEFAULTCONFDIR dd(CONFDIR, VideoDirectory) ++#define DEFAULTARGSDIR dd(ARGSDIR, "/etc/vdr/conf.d") + #define DEFAULTCACHEDIR dd(CACHEDIR, VideoDirectory) + #define DEFAULTRESDIR dd(RESDIR, ConfigDirectory) + #define DEFAULTPLUGINDIR PLUGINDIR +@@ -229,6 +234,15 @@ + VdrUser = VDR_USER; + #endif + ++ cArgs *Args = NULL; ++ if (argc == 1) { ++ Args = new cArgs(argv[0]); ++ if (Args->ReadDirectory(DEFAULTARGSDIR)) { ++ argc = Args->GetArgc(); ++ argv = Args->GetArgv(); ++ } ++ } ++ + SetVideoDirectory(VideoDirectory); + cPluginManager PluginManager(DEFAULTPLUGINDIR); + +@@ -256,6 +270,7 @@ + { "port", required_argument, NULL, 'p' }, + { "record", required_argument, NULL, 'r' }, + { "resdir", required_argument, NULL, 'r' | 0x100 }, ++ { "showargs", optional_argument, NULL, 's' | 0x200 }, + { "shutdown", required_argument, NULL, 's' }, + { "split", no_argument, NULL, 's' | 0x100 }, + { "terminal", required_argument, NULL, 't' }, +@@ -428,6 +443,19 @@ + case 's' | 0x100: + Setup.SplitEditedFiles = 1; + break; ++ case 's' | 0x200: { ++ const char *ArgsDir = optarg ? optarg : DEFAULTARGSDIR; ++ cArgs Args(argv[0]); ++ if (!Args.ReadDirectory(ArgsDir)) { ++ fprintf(stderr, "vdr: can't read arguments from directory: %s\n", ArgsDir); ++ return 2; ++ } ++ int c = Args.GetArgc(); ++ char **v = Args.GetArgv(); ++ for (int i = 1; i < c; i++) ++ printf("%s\n", v[i]); ++ return 0; ++ } + case 't': Terminal = optarg; + if (access(Terminal, R_OK | W_OK) < 0) { + fprintf(stderr, "vdr: can't access terminal: %s\n", Terminal); +@@ -541,6 +569,8 @@ + " -s CMD, --shutdown=CMD call CMD to shutdown the computer\n" + " --split split edited files at the editing marks (only\n" + " useful in conjunction with --edit)\n" ++ " --showargs[=DIR] print the arguments read from DIR and exit\n" ++ " (default: %s)\n" + " -t TTY, --terminal=TTY controlling tty\n" + " -u USER, --user=USER run as user USER; only applicable if started as\n" + " root\n" +@@ -563,6 +593,7 @@ + DEFAULTLOCDIR, + DEFAULTSVDRPPORT, + DEFAULTRESDIR, ++ DEFAULTARGSDIR, + DEFAULTVIDEODIR, + DEFAULTWATCHDOG + ); +@@ -848,6 +879,10 @@ + alarm(WatchdogTimeout); // Initial watchdog timer start + } + ++#ifdef SDNOTIFY ++ sd_notify(0, "READY=1\nSTATUS=Ready"); ++#endif ++ + // Main program loop: + + #define DELETE_MENU ((IsInfoMenu &= (Menu == NULL)), delete Menu, Menu = NULL) +diff -Naur vdr-2.0.6.orig/vdr.c.orig vdr-2.0.6/vdr.c.orig diff --git a/media-video/vdr/files/vdr-2.0.6_systemd_argsdir_vanilla.patch b/media-video/vdr/files/vdr-2.0.6_systemd_argsdir_vanilla.patch new file mode 100644 index 000000000000..81ce17b779e0 --- /dev/null +++ b/media-video/vdr/files/vdr-2.0.6_systemd_argsdir_vanilla.patch @@ -0,0 +1,439 @@ +backported from vdr-2.1.7 +systemd support +argsdir support +diff -Naur vdr-2.0.6.orig/HISTORY vdr-2.0.6/HISTORY +--- vdr-2.0.6.orig/HISTORY 2014-10-01 16:30:32.000000000 +0200 ++++ vdr-2.0.6/HISTORY 2015-01-20 03:06:42.000000000 +0100 +@@ -7915,3 +7915,13 @@ + on a system with a large number of recordings. + - The APIVERSION has been increased to 2.0.6 due to the changes to pat.h, sdt.h and + the functional modification to cFont::CreateFont(). ++ ++2015-01-18: Version 2.0.6 + backport of systemd support from versions 2.1.6 and 2.1.7 ++ ++- Added support for systemd (thanks to Christopher Reimer). To activate this you ++ need to add "SDNOTIFY=1" to the 'make' call. ++ ++2015-01-18: Version 2.0.6 + backport of reading command line arguments from files, from version 2.1.7 ++ ++- VDR now reads command line options from *.conf files in /etc/vdr/conf.d (thanks ++ to Lars Hanisch). See vdr.1 and vdr.5 for details. +diff -Naur vdr-2.0.6.orig/Make.config.template vdr-2.0.6/Make.config.template +--- vdr-2.0.6.orig/Make.config.template 2014-10-01 16:30:32.000000000 +0200 ++++ vdr-2.0.6/Make.config.template 2015-01-20 03:06:42.000000000 +0100 +@@ -38,6 +38,7 @@ + + #VIDEODIR = /srv/vdr/video + #CONFDIR = /var/lib/vdr ++#ARGSDIR = /etc/vdr/conf.d + #CACHEDIR = /var/cache/vdr + + # Overrides for preset/legacy configurations: +diff -Naur vdr-2.0.6.orig/Makefile vdr-2.0.6/Makefile +--- vdr-2.0.6.orig/Makefile 2015-01-20 02:55:00.000000000 +0100 ++++ vdr-2.0.6/Makefile 2015-01-20 03:12:57.000000000 +0100 +@@ -31,6 +31,7 @@ + DESTDIR ?= + VIDEODIR ?= /srv/vdr/video + CONFDIR ?= /var/lib/vdr ++ARGSDIR ?= /etc/vdr/conf.d + CACHEDIR ?= /var/cache/vdr + + PREFIX ?= /usr/local +@@ -66,7 +67,7 @@ + + SILIB = $(LSIDIR)/libsi.a + +-OBJS = audio.o channels.o ci.o config.o cutter.o device.o diseqc.o dvbdevice.o dvbci.o\ ++OBJS = args.o audio.o channels.o ci.o config.o cutter.o device.o diseqc.o dvbdevice.o dvbci.o\ + dvbplayer.o dvbspu.o dvbsubtitle.o eit.o eitscan.o epg.o filter.o font.o i18n.o interface.o keys.o\ + lirc.o menu.o menuitems.o nit.o osdbase.o osd.o pat.o player.o plugin.o\ + receiver.o recorder.o recording.o remote.o remux.o ringbuffer.o sdt.o sections.o shutdown.o\ +@@ -93,12 +94,18 @@ + DEFINES += -DBIDI + LIBS += $(shell pkg-config --libs fribidi) + endif ++ifdef SDNOTIFY ++INCLUDES += $(shell pkg-config --cflags libsystemd-daemon) ++DEFINES += -DSDNOTIFY ++LIBS += $(shell pkg-config --libs libsystemd-daemon) ++endif + + LIRC_DEVICE ?= /var/run/lirc/lircd + + DEFINES += -DLIRC_DEVICE=\"$(LIRC_DEVICE)\" + DEFINES += -DVIDEODIR=\"$(VIDEODIR)\" + DEFINES += -DCONFDIR=\"$(CONFDIR)\" ++DEFINES += -DARGSDIR=\"$(ARGSDIR)\" + DEFINES += -DCACHEDIR=\"$(CACHEDIR)\" + DEFINES += -DRESDIR=\"$(RESDIR)\" + DEFINES += -DPLUGINDIR=\"$(LIBDIR)\" +@@ -143,6 +150,8 @@ + @echo "mandir=$(MANDIR)" >> $@ + @echo "configdir=$(CONFDIR)" >> $@ + @echo "videodir=$(VIDEODIR)" >> $@ ++# @echo "configdir=$(CONFDIR)" >> $@ ++ @echo "argsdir=$(ARGSDIR)" >> $@ + @echo "cachedir=$(CACHEDIR)" >> $@ + @echo "resdir=$(RESDIR)" >> $@ + @echo "libdir=$(LIBDIR)" >> $@ +@@ -260,6 +269,7 @@ + install-dirs: + @mkdir -p $(DESTDIR)$(VIDEODIR) + # @mkdir -p $(DESTDIR)$(CONFDIR) ++ @mkdir -p $(DESTDIR)$(ARGSDIR) + # @mkdir -p $(DESTDIR)$(CACHEDIR) + @mkdir -p $(DESTDIR)$(RESDIR) + +diff -Naur vdr-2.0.6.orig/args.c vdr-2.0.6/args.c +--- vdr-2.0.6.orig/args.c 1970-01-01 01:00:00.000000000 +0100 ++++ vdr-2.0.6/args.c 2015-01-20 03:06:42.000000000 +0100 +@@ -0,0 +1,129 @@ ++/* ++ * args.c: Read arguments from files ++ * ++ * See the main source file 'vdr.c' for copyright information and ++ * how to reach the author. ++ * ++ * Original version written by Lars Hanisch <dvb@flensrocker.de>. ++ * ++ * $Id: vdr-2.0.6_systemd_argsdir_vanilla.patch,v 1.1 2015/01/20 03:19:46 hd_brummy Exp $ ++ */ ++ ++#include "args.h" ++#include <unistd.h> ++ ++cArgs::cArgs(const char *Argv0) ++{ ++ argv0 = Argv0; ++ argc = 0; ++ argv = NULL; ++} ++ ++cArgs::~cArgs(void) ++{ ++ if (argv != NULL) ++ delete [] argv; ++} ++ ++bool cArgs::AddArg(const char *s) ++{ ++ if (inVdrSection) ++ args.Append(strdup(s)); ++ else if (*lastArg == NULL) ++ return false; ++ else ++ lastArg = cString::sprintf("%s %s", *lastArg, s); ++ return true; ++} ++ ++bool cArgs::ReadDirectory(const char *Directory) ++{ ++ if (argv != NULL) ++ delete [] argv; ++ argc = 0; ++ argv = NULL; ++ args.Clear(); ++ lastArg = NULL; ++ inVdrSection = false; ++ cFileNameList files(Directory, false); ++ if (files.Size() == 0) ++ return false; ++ for (int i = 0; i < files.Size(); i++) { ++ const char *fileName = files.At(i); ++ if (startswith(fileName, ".") || !endswith(fileName, ".conf")) ++ continue; ++ cString fullFileName = AddDirectory(Directory, fileName); ++ struct stat fs; ++ if ((access(*fullFileName, F_OK) != 0) || (stat(*fullFileName, &fs) != 0) || S_ISDIR(fs.st_mode)) ++ continue; ++ bool ok = true; ++ int line = 0; ++ FILE *f = fopen(*fullFileName, "r"); ++ if (f) { ++ char *s; ++ cReadLine ReadLine; ++ while ((s = ReadLine.Read(f)) != NULL) { ++ line++; ++ s = stripspace(skipspace(s)); ++ if (!isempty(s) && (s[0] != '#')) { ++ if (startswith(s, "[") && endswith(s, "]")) { ++ s[strlen(s) - 1] = 0; ++ s++; ++ if (*lastArg) { ++ args.Append(strdup(*lastArg)); ++ lastArg = NULL; ++ } ++ if (strcmp(s, "vdr") == 0) ++ inVdrSection = true; ++ else { ++ inVdrSection = false; ++ lastArg = cString::sprintf("--plugin=%s", s); ++ } ++ } ++ else { ++ if ((strlen(s) > 2) && (s[0] == '-') && (s[1] != '-')) { // short option, split at first space ++ char *p = strchr(s, ' '); ++ if (p == NULL) { ++ ok = AddArg(s); ++ if (!ok) ++ break; ++ } ++ else { ++ *p = 0; ++ p++; ++ ok = AddArg(s); ++ if (!ok) ++ break; ++ ok = AddArg(p); ++ if (!ok) ++ break; ++ } ++ } ++ else { ++ ok = AddArg(s); ++ if (!ok) ++ break; ++ } ++ } ++ } ++ } ++ fclose(f); ++ } ++ if (!ok) { ++ esyslog("ERROR: args file %s, line %d", *fullFileName, line); ++ return false; ++ } ++ } ++ if (*lastArg) { ++ args.Append(strdup(*lastArg)); ++ lastArg = NULL; ++ } ++ argv = new char*[args.Size() + 1]; ++ argv[0] = strdup(*argv0); ++ argc = 1; ++ for (int i = 0; i < args.Size(); i++) { ++ argv[argc] = args.At(i); ++ argc++; ++ } ++ return true; ++} +diff -Naur vdr-2.0.6.orig/args.h vdr-2.0.6/args.h +--- vdr-2.0.6.orig/args.h 1970-01-01 01:00:00.000000000 +0100 ++++ vdr-2.0.6/args.h 2015-01-20 03:06:42.000000000 +0100 +@@ -0,0 +1,34 @@ ++/* ++ * args.h: Read arguments from files ++ * ++ * See the main source file 'vdr.c' for copyright information and ++ * how to reach the author. ++ * ++ * Original version written by Lars Hanisch <dvb@flensrocker.de>. ++ * ++ * $Id: vdr-2.0.6_systemd_argsdir_vanilla.patch,v 1.1 2015/01/20 03:19:46 hd_brummy Exp $ ++ */ ++ ++#ifndef __ARGS_H ++#define __ARGS_H ++ ++#include "tools.h" ++ ++class cArgs { ++private: ++ cString argv0; ++ cStringList args; ++ cString lastArg; ++ bool inVdrSection; ++ int argc; ++ char **argv; ++ bool AddArg(const char *s); ++public: ++ cArgs(const char *Argv0); ++ ~cArgs(void); ++ bool ReadDirectory(const char *Directory); ++ int GetArgc(void) const { return argc; }; ++ char **GetArgv(void) const { return argv; }; ++ }; ++ ++#endif //__ARGS_H +diff -Naur vdr-2.0.6.orig/interface.c vdr-2.0.6/interface.c +--- vdr-2.0.6.orig/interface.c 2014-10-01 16:30:32.000000000 +0200 ++++ vdr-2.0.6/interface.c 2015-01-20 03:03:40.000000000 +0100 +@@ -10,6 +10,9 @@ + #include "interface.h" + #include <ctype.h> + #include <stdlib.h> ++#ifdef SDNOTIFY ++#include <systemd/sd-daemon.h> ++#endif + #include <unistd.h> + #include "i18n.h" + #include "status.h" +@@ -159,6 +162,9 @@ + bool known = Keys.KnowsRemote(Remote->Name()); + dsyslog("remote control %s - %s", Remote->Name(), known ? "keys known" : "learning keys"); + if (!known) { ++#ifdef SDNOTIFY ++ sd_notify(0, "READY=1\nSTATUS=Learning keys..."); ++#endif + cSkinDisplayMenu *DisplayMenu = Skins.Current()->DisplayMenu(); + DisplayMenu->SetMenuCategory(mcUnknown); + char Headline[256]; +diff -Naur vdr-2.0.6.orig/vdr.1 vdr-2.0.6/vdr.1 +--- vdr-2.0.6.orig/vdr.1 2014-10-01 16:30:32.000000000 +0200 ++++ vdr-2.0.6/vdr.1 2015-01-20 03:06:42.000000000 +0100 +@@ -178,6 +178,10 @@ + Read resource files from \fIdir\fR + (default is to read them from the config directory). + .TP ++.BI \-\-showargs[= dir ] ++Read command line arguments from \fIdir\fR (default is \fI/etc/vdr/conf.d\fR), ++display them to the console and exit. ++.TP + .BI \-s\ cmd ,\ \-\-shutdown= cmd + Call \fIcmd\fR to shutdown the computer. See the file \fIINSTALL\fR for more + information. +@@ -213,6 +217,10 @@ + .BI \-w\ sec ,\ \-\-watchdog= sec + Activate the watchdog timer with a timeout of \fIsec\fR seconds. + A value of \fB0\fR (default) disables the watchdog. ++.P ++If started without any options, vdr tries to read command line options ++from files named '*.conf' in the directory /etc/vdr/conf.d. Files are ++read in alphabetical order. See vdr(5) for details. + .SH SIGNALS + .TP + .B SIGINT, SIGTERM +diff -Naur vdr-2.0.6.orig/vdr.5 vdr-2.0.6/vdr.5 +--- vdr-2.0.6.orig/vdr.5 2014-10-01 16:30:32.000000000 +0200 ++++ vdr-2.0.6/vdr.5 2015-01-20 03:06:42.000000000 +0100 +@@ -889,6 +889,33 @@ + just 16 bit wide. The internal representation in VDR allows for 32 bit to + be used, so that external tools can generate EPG data that is guaranteed + not to collide with the ids of existing data. ++.SS COMMANDLINE OPTIONS ++If started without any options, vdr tries to read any files in the directory ++/etc/vdr/conf.d with names that do not begin with a '.' and that end with '.conf'. ++These files are read in alphabetical order. The format of these files is ++ ++# comment ++.br ++[name] ++.br ++-a ++.br ++-b 123 ++.br ++--long ++.br ++--longarg=123 ++.br ++ ++Any lines that begin with '#' as the first non-whitespace character are considered ++comments and are ignored. ++A command line option file consists of one or more sections, indicated by '[name]', ++where 'name' is either the fixed word 'vdr' (if this section contains options for ++the main VDR program) or the name of the plugin this section applies to. ++Each option must be written on a separate line, including the leading '-' (for ++a short option) or '--' (for a long option). If the option has additional arguments, ++they have to be written on the same line as the option itself, separated from the ++option with a blank (short option) or equal sign (long option). + .SH SEE ALSO + .BR vdr (1) + .SH AUTHOR +diff -Naur vdr-2.0.6.orig/vdr.c vdr-2.0.6/vdr.c +--- vdr-2.0.6.orig/vdr.c 2014-10-01 16:30:32.000000000 +0200 ++++ vdr-2.0.6/vdr.c 2015-01-20 03:06:42.000000000 +0100 +@@ -34,8 +34,12 @@ + #include <stdlib.h> + #include <sys/capability.h> + #include <sys/prctl.h> ++#ifdef SDNOTIFY ++#include <systemd/sd-daemon.h> ++#endif + #include <termios.h> + #include <unistd.h> ++#include "args.h" + #include "audio.h" + #include "channels.h" + #include "config.h" +@@ -186,6 +190,7 @@ + #define DEFAULTWATCHDOG 0 // seconds + #define DEFAULTVIDEODIR VIDEODIR + #define DEFAULTCONFDIR dd(CONFDIR, VideoDirectory) ++#define DEFAULTARGSDIR dd(ARGSDIR, "/etc/vdr/conf.d") + #define DEFAULTCACHEDIR dd(CACHEDIR, VideoDirectory) + #define DEFAULTRESDIR dd(RESDIR, ConfigDirectory) + #define DEFAULTPLUGINDIR PLUGINDIR +@@ -223,6 +228,15 @@ + VdrUser = VDR_USER; + #endif + ++ cArgs *Args = NULL; ++ if (argc == 1) { ++ Args = new cArgs(argv[0]); ++ if (Args->ReadDirectory(DEFAULTARGSDIR)) { ++ argc = Args->GetArgc(); ++ argv = Args->GetArgv(); ++ } ++ } ++ + SetVideoDirectory(VideoDirectory); + cPluginManager PluginManager(DEFAULTPLUGINDIR); + +@@ -250,6 +264,7 @@ + { "port", required_argument, NULL, 'p' }, + { "record", required_argument, NULL, 'r' }, + { "resdir", required_argument, NULL, 'r' | 0x100 }, ++ { "showargs", optional_argument, NULL, 's' | 0x200 }, + { "shutdown", required_argument, NULL, 's' }, + { "split", no_argument, NULL, 's' | 0x100 }, + { "terminal", required_argument, NULL, 't' }, +@@ -422,6 +437,19 @@ + case 's' | 0x100: + Setup.SplitEditedFiles = 1; + break; ++ case 's' | 0x200: { ++ const char *ArgsDir = optarg ? optarg : DEFAULTARGSDIR; ++ cArgs Args(argv[0]); ++ if (!Args.ReadDirectory(ArgsDir)) { ++ fprintf(stderr, "vdr: can't read arguments from directory: %s\n", ArgsDir); ++ return 2; ++ } ++ int c = Args.GetArgc(); ++ char **v = Args.GetArgv(); ++ for (int i = 1; i < c; i++) ++ printf("%s\n", v[i]); ++ return 0; ++ } + case 't': Terminal = optarg; + if (access(Terminal, R_OK | W_OK) < 0) { + fprintf(stderr, "vdr: can't access terminal: %s\n", Terminal); +@@ -535,6 +563,8 @@ + " -s CMD, --shutdown=CMD call CMD to shutdown the computer\n" + " --split split edited files at the editing marks (only\n" + " useful in conjunction with --edit)\n" ++ " --showargs[=DIR] print the arguments read from DIR and exit\n" ++ " (default: %s)\n" + " -t TTY, --terminal=TTY controlling tty\n" + " -u USER, --user=USER run as user USER; only applicable if started as\n" + " root\n" +@@ -557,6 +587,7 @@ + DEFAULTLOCDIR, + DEFAULTSVDRPPORT, + DEFAULTRESDIR, ++ DEFAULTARGSDIR, + DEFAULTVIDEODIR, + DEFAULTWATCHDOG + ); +@@ -837,6 +868,10 @@ + alarm(WatchdogTimeout); // Initial watchdog timer start + } + ++#ifdef SDNOTIFY ++ sd_notify(0, "READY=1\nSTATUS=Ready"); ++#endif ++ + // Main program loop: + + #define DELETE_MENU ((IsInfoMenu &= (Menu == NULL)), delete Menu, Menu = NULL) diff --git a/media-video/vdr/vdr-2.0.6-r2.ebuild b/media-video/vdr/vdr-2.0.6-r2.ebuild new file mode 100644 index 000000000000..ae8fa6faa47c --- /dev/null +++ b/media-video/vdr/vdr-2.0.6-r2.ebuild @@ -0,0 +1,289 @@ +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/media-video/vdr/vdr-2.0.6-r2.ebuild,v 1.1 2015/01/20 03:19:46 hd_brummy Exp $ + +EAPI=5 + +inherit eutils flag-o-matic multilib toolchain-funcs + +# Switches supported by extensions-patch +EXT_PATCH_FLAGS="alternatechannel ddepgentry dvlvidprefer graphtft + jumpplay jumpingseconds mainmenuhooks menuorg naludump permashift permashift_v1 + pinplugin rotor ttxtsubs vasarajanauloja wareagleicon yaepg" + +# names of the use-flags +EXT_PATCH_FLAGS_RENAMED="" + +# names ext-patch uses internally, here only used for maintainer checks +EXT_PATCH_FLAGS_RENAMED_EXT_NAME="" + +IUSE="bidi debug html systemd vanilla ${EXT_PATCH_FLAGS} ${EXT_PATCH_FLAGS_RENAMED}" + +MY_PV="${PV%_p*}" +MY_P="${PN}-${MY_PV}" +S="${WORKDIR}/${MY_P}" + +EXT_P="extpng-${P}-gentoo-edition-v6" + +DESCRIPTION="Video Disk Recorder - turns a pc into a powerful set top box for DVB" +HOMEPAGE="http://www.tvdr.de/" +SRC_URI="ftp://ftp.tvdr.de/vdr/${MY_P}.tar.bz2 + http://dev.gentoo.org/~hd_brummy/distfiles/${EXT_P}.patch.bz2" + +KEYWORDS="~arm ~amd64 ~ppc ~x86" +SLOT="0" +LICENSE="GPL-2" + +REQUIRED_USE=" + permashift? ( !permashift_v1 ) + permashift_v1? ( !permashift )" + +COMMON_DEPEND="virtual/jpeg + sys-libs/libcap + >=media-libs/fontconfig-2.4.2 + >=media-libs/freetype-2" + +DEPEND="${COMMON_DEPEND} + >=virtual/linuxtv-dvb-headers-5.3 + sys-devel/gettext" + +RDEPEND="${COMMON_DEPEND} + dev-lang/perl + >=media-tv/gentoo-vdr-scripts-2.5 + media-fonts/corefonts + bidi? ( dev-libs/fribidi ) + systemd? ( sys-apps/systemd )" + +CONF_DIR=/etc/vdr +CAP_FILE=${S}/capabilities.sh +CAPS="# Capabilities of the vdr-executable for use by startscript etc." + +pkg_setup() { + use debug && append-flags -g + + PLUGIN_LIBDIR="/usr/$(get_libdir)/vdr/plugins" + + tc-export CC CXX AR +} + +add_cap() { + local arg + for arg; do + CAPS="${CAPS}\n${arg}=1" + done +} + +enable_patch() { + local arg ARG_UPPER + for arg; do + ARG_UPPER=$(echo $arg|tr '[:lower:]' '[:upper:]') + echo "${ARG_UPPER} = 1" >> Make.config + + # codesnippet to bring the extpng defines into the vdr.pc CXXFLAGS CFLAGS + echo "-DUSE_${ARG_UPPER}" >> "${T}"/defines.tmp + cat "${T}"/defines.tmp | tr \\\012 ' ' > "${T}"/defines.IUSE + export DEFINES_IUSE=$( cat ${T}/defines.IUSE ) + done +} + +extensions_add_make_conf() +{ + # copy all ifdef for extensions-patch to Make.config + sed -e '1,/need to touch the following:/d' \ + -e '/need to touch the following/,/^$/d' \ + Make.config.template >> Make.config +} + +extensions_all_defines() { + # extract all possible settings for extensions-patch + sed -e '/^#\?[A-Z].*= 1/!d' -e 's/^#\?//' -e 's/ .*//' \ + Make.config.template \ + | sort \ + | tr '[:upper:]' '[:lower:]' +} + +lang_po() { + LING_PO=$( ls ${S}/po | sed -e "s:.po::g" | cut -d_ -f1 | tr \\\012 ' ' ) +} + +src_prepare() { + # apply maintainace-patches + ebegin "Changing paths for gentoo" + + local DVBDIR=/usr/include + local i + for i in ${DVB_HEADER_PATH} /usr/include/v4l-dvb-hg /usr/include; do + [[ -d ${i} ]] || continue + if [[ -f ${i}/linux/dvb/dmx.h ]]; then + einfo "Found DVB header files in ${i}" + DVBDIR=${i} + break + fi + done + + # checking for s2api headers + local api_version + api_version=$(awk -F' ' '/define DVB_API_VERSION / {print $3}' "${DVBDIR}"/linux/dvb/version.h) + api_version=${api_version}*$(awk -F' ' '/define DVB_API_VERSION_MINOR / {print $3}' "${DVBDIR}"/linux/dvb/version.h) + + if [[ ${api_version:-0} -lt 5*3 ]]; then + eerror "DVB header files do not contain s2api support or too old for ${P}" + eerror "You cannot compile VDR against old dvb-header" + die "DVB headers too old" + fi + + cat > Make.config <<-EOT + # + # Generated by ebuild ${PF} + # + PREFIX = /usr + DVBDIR = ${DVBDIR} + PLUGINLIBDIR = ${PLUGIN_LIBDIR} + CONFDIR = ${CONF_DIR} + VIDEODIR = /var/vdr/video + LOCDIR = \$(PREFIX)/share/locale + INCDIR = \$(PREFIX)/include + + DEFINES += -DCONFDIR=\"\$(CONFDIR)\" + INCLUDES += -I\$(DVBDIR) + + # >=vdr-1.7.36-r1; parameter only used for compiletime on vdr + # PLUGINLIBDIR (plugin Makefile old) = LIBDIR (plugin Makefile new) + LIBDIR = ${PLUGIN_LIBDIR} + PCDIR = /usr/$(get_libdir)/pkgconfig + EOT + eend 0 + + # support languages, written from right to left + BUILD_PARAMS+=" BIDI=$(usex bidi 1 0)" + + # systemd support + use systemd && BUILD_PARAMS+=" SDNOTIFY=$(usex systemd 1 0)" + + if ! use vanilla; then + + # Now apply extensions patch + epatch "${WORKDIR}/${EXT_P}.patch" + + # This allows us to start even if some plugin does not exist + # or is not loadable. + enable_patch PLUGINMISSING + enable_patch CHANNELBIND + + if [[ -n ${VDR_MAINTAINER_MODE} ]]; then + einfo "Doing maintainer checks:" + + # we do not support these patches + # (or have them already hard enabled) + local IGNORE_PATCHES="pluginmissing channelbind" + + extensions_all_defines > "${T}"/new.IUSE + echo $EXT_PATCH_FLAGS $EXT_PATCH_FLAGS_RENAMED_EXT_NAME \ + $IGNORE_PATCHES | \ + tr ' ' '\n' |sort > "${T}"/old.IUSE + local DIFFS=$(diff -u "${T}"/old.IUSE "${T}"/new.IUSE|grep '^[+-][^+-]') + if [[ -z ${DIFFS} ]]; then + einfo "EXT_PATCH_FLAGS is up to date." + else + ewarn "IUSE differences!" + local diff + for diff in $DIFFS; do + ewarn "$diff" + done + fi + fi + + ebegin "Enabling selected patches" + local flag + for flag in $EXT_PATCH_FLAGS; do + use $flag && enable_patch ${flag} + done + + eend 0 + + extensions_add_make_conf + + # add defined use-flags compile options to vdr.pc + sed -e "s:\$(CDEFINES) \$(CINCLUDES) \$(HDRDIR):\$(CDEFINES) \$(CINCLUDES) \$(HDRDIR) \$(DEFINES_IUSE):" \ + -i Makefile + + ebegin "Make depend" + emake .dependencies >/dev/null + eend $? "make depend failed" + fi + + epatch "${FILESDIR}/${P}-r2_gentoo.patch" + + # backport from vdr-2.1.7 for better systemd support + if use vanilla; then + epatch "${FILESDIR}/${P}_systemd_argsdir_vanilla.patch" + else + epatch "${FILESDIR}/${P}_systemd_argsdir.patch" + fi + + epatch_user + + add_cap CAP_UTF8 + + add_cap CAP_IRCTRL_RUNTIME_PARAM \ + CAP_VFAT_RUNTIME_PARAM \ + CAP_CHUID \ + CAP_SHUTDOWN_AUTO_RETRY + + echo -e ${CAPS} > "${CAP_FILE}" + + # LINGUAS support + einfo "\n \t VDR supports the LINGUAS values" + + lang_po + + einfo "\t Please set one of this values in your sytem make.conf" + einfo "\t LINGUAS=\"${LING_PO}\"\n" + + if [[ -z ${LINGUAS} ]]; then + einfo "\n \t No values in LINGUAS=" + einfo "\t You will get only english text on OSD \n" + fi + + strip-linguas ${LING_PO} en +} + +src_install() { +# # trick makefile not to create a videodir by supplying it with an existing +# # directory + emake \ + VIDEODIR="/" \ + DESTDIR="${D}" install || die "emake install failed" + + keepdir "${PLUGIN_LIBDIR}" + + # backup for plugins they don't be able to create this dir + keepdir "${CONF_DIR}"/plugins + + if use html; then + dohtml *.html + fi + + dodoc MANUAL INSTALL README* HISTORY CONTRIBUTORS + + insinto /usr/share/vdr + doins "${CAP_FILE}" + + if use alternatechannel; then + insinto /etc/vdr + doins "${FILESDIR}"/channel_alternative.conf + fi + + chown -R vdr:vdr "${D}/${CONF_DIR}" +} + +pkg_postinst() { + elog "It is a good idea to run vdrplugin-rebuild now." + + elog "To get nice symbols in OSD we recommend to install" + elog "\t1. emerge media-fonts/vdrsymbols-ttf" + elog "\t2. select font VDRSymbolsSans in Setup" + elog "" + elog "To get an idea how to proceed now, have a look at our vdr-guide:" + elog "\thttps://wiki.gentoo.org/wiki/VDR" +} |