Skip to contentSkip to conversation

Pull request for branch yem-tvheadend

GIT PULL New Yann E. MORIN 3 participants 7 messages Dec 24, 2012 – Dec 27, 2012

lore
Share & tools
lore
#0 lore raw

Hello All!

Here's an attempt at adding the tvheadend package to buildroot. tvheadend is a PVR/DVR solution for DVB and IP streams, which can be used as a backend by other tools, such as XBMC.

The following changes since commit 5f70f5caea8a8e229a5adad948b32fe4e3c88289:

new package: proxychains (2012-12-23 21:57:45 +0100)

are available in the git repository at:
git://gitorious.org/buildroot/buildroot.git yem-tvheadend

Yann E. MORIN (1):
package/tvheadend: new package

 package/Config.in                   |    1 +
 package/tvheadend/Config.in         |   20 +++++++++
 package/tvheadend/tvheadend.config  |   13 ++++++
 package/tvheadend/tvheadend.default |    6 +++
 package/tvheadend/tvheadend.init    |   54 +++++++++++++++++++++++++
 package/tvheadend/tvheadend.mk      |   76 +++++++++++++++++++++++++++++++++++
 package/tvheadend/tvheadend.mkuser  |   52 ++++++++++++++++++++++++
 7 files changed, 222 insertions(+), 0 deletions(-)
 create mode 100644 package/tvheadend/Config.in
 create mode 100644 package/tvheadend/tvheadend.config
 create mode 100644 package/tvheadend/tvheadend.default
 create mode 100644 package/tvheadend/tvheadend.init
 create mode 100644 package/tvheadend/tvheadend.mk
 create mode 100755 package/tvheadend/tvheadend.mkuser

Regards,
Yann E. MORIN

Signature · 6 lines
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'
#1 lore raw

PATCH 1/1 package/tvheadend: new package

---
 package/Config.in                   |    1 +
 package/tvheadend/Config.in         |   20 +++++++++
 package/tvheadend/tvheadend.config  |   13 ++++++
 package/tvheadend/tvheadend.default |    6 +++
 package/tvheadend/tvheadend.init    |   54 +++++++++++++++++++++++++
 package/tvheadend/tvheadend.mk      |   76 +++++++++++++++++++++++++++++++++++
 package/tvheadend/tvheadend.mkuser  |   52 ++++++++++++++++++++++++
 7 files changed, 222 insertions(+), 0 deletions(-)
 create mode 100644 package/tvheadend/Config.in
 create mode 100644 package/tvheadend/tvheadend.config
 create mode 100644 package/tvheadend/tvheadend.default
 create mode 100644 package/tvheadend/tvheadend.init
 create mode 100644 package/tvheadend/tvheadend.mk
 create mode 100755 package/tvheadend/tvheadend.mkuser
package/Config.in +1 -0
index 3d556b2..bcf0009 100644
@@ -682,6 +682,7 @@ source "package/tinyhttpd/Config.in"
 source "package/tn5250/Config.in"
 source "package/transmission/Config.in"
 source "package/ttcp/Config.in"
+source "package/tvheadend/Config.in"
 source "package/udpcast/Config.in"
 source "package/ulogd/Config.in"
 source "package/ushare/Config.in"
package/tvheadend/Config.in new file +20 -0
new file mode 100644
index 0000000..679ca13
@@ -0,0 +1,20 @@
+comment "tvheadend requires a toolchain with WCHAR"
+	depends on !BR2_USE_WCHAR
+
+config BR2_PACKAGE_TVHEADEND
+	bool "tvheadend"
+	depends on BR2_USE_WCHAR    # python
+	depends on BR2_USE_MMU      # python
+	select BR2_PACKAGE_OPENSSL
+	select BR2_PACKAGE_PYTHON
+	help
+	  Tvheadend is a TV streaming server for Linux supporting DVB-S,
+	  DVB-S2, DVB-C, DVB-T, ATSC, IPTV, and Analog video (V4L) as
+	  input sources.
+	  
+	  https://www.lonelycoder.com/redmine/projects/tvheadend/
+	  
+	  Note: if you want Avahi support, you'll need to enable:
+	    - Avahi
+	    - D-Bus
+	    - libdaemon
package/tvheadend/tvheadend.config new file +13 -0
new file mode 100644
index 0000000..b920943
@@ -0,0 +1,13 @@
+{
+        "enabled": 1,
+        "username": "admin",
+        "password": "admin",
+        "comment": "TVHeadend admin user",
+        "prefix": "0.0.0.0/0",
+        "streaming": 1,
+        "dvr": 1,
+        "dvrallcfg": 1,
+        "webui": 1,
+        "admin": 1,
+        "id": "1"
+}
package/tvheadend/tvheadend.default new file +6 -0
new file mode 100644
index 0000000..253f832
@@ -0,0 +1,6 @@
+TVH_USER=tvheadend
+TVH_GROUP=tvheadend
+#TVH_ADAPTERS=
+#TVH_HTTP_PORT=9981
+#TVH_HTSP_PORT=9982
+#TVH_DEBUG=1
package/tvheadend/tvheadend.init new file +54 -0

54 lines not on this page · raw message

package/tvheadend/tvheadend.mk new file +76 -0

76 lines not on this page · raw message

package/tvheadend/tvheadend.mkuser new file +52 -0

52 lines not on this page · raw message

Signature · 1 line
1.7.2.5
#2 lore raw

PATCH 1/1 package/tvheadend: new package

Hello All, Maxime,

On Monday 24 December 2012 Yann E. MORIN wrote:
[--SNIP--]

package/tvheadend/tvheadend.mk

Quoted 6 lines
package/tvheadend/tvheadend.mk new file +0 -0
new file mode 100644
index 0000000..d2fe97a
@@ -0,0 +1,76 @@

[--SNIP--]

package/tvheadend/tvheadend.mk line 71

Quoted 5 lines
package/tvheadend/tvheadend.mk new file +5 -0
+define TVHEADEND_INSTALL_SYSV_STARTUP_FILES
+	$(INSTALL) -D package/tvheadend/tvheadend.default $(TARGET_DIR)/etc/default/tvheadend
+	$(INSTALL) -D package/tvheadend/tvheadend.init    $(TARGET_DIR)/etc/init.d/S99tvheadend
+endef
+TVHEADEND_INSTALL_INIT_SYSV          = TVHEADEND_INSTALL_SYSV_STARTUP_FILES

I just forgot to rebuild after this change. It's broken, of course. I've now fixed it and pushed the new package. Sorry for the confusion.

Regards,
Yann E. MORIN.

Signature · 6 lines
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'
#3 lore raw

PATCH 1/1 package/tvheadend: new package

In reply to Yann E. MORIN
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Yann" == Yann E MORIN <[email protected]> writes:

Hi,

Yann> Signed-off-by: "Yann E. MORIN" <[email protected]> Yann> ---

 Yann>  package/Config.in                   |    1 +
 Yann>  package/tvheadend/Config.in         |   20 +++++++++
 Yann>  package/tvheadend/tvheadend.config  |   13 ++++++
 Yann>  package/tvheadend/tvheadend.default |    6 +++
 Yann>  package/tvheadend/tvheadend.init    |   54 +++++++++++++++++++++++++
 Yann>  package/tvheadend/tvheadend.mk      |   76 +++++++++++++++++++++++++++++++++++
 Yann>  package/tvheadend/tvheadend.mkuser  |   52 ++++++++++++++++++++++++
 Yann>  7 files changed, 222 insertions(+), 0 deletions(-)
 Yann>  create mode 100644 package/tvheadend/Config.in
 Yann>  create mode 100644 package/tvheadend/tvheadend.config
 Yann>  create mode 100644 package/tvheadend/tvheadend.default
 Yann>  create mode 100644 package/tvheadend/tvheadend.init
 Yann>  create mode 100644 package/tvheadend/tvheadend.mk
 Yann>  create mode 100755 package/tvheadend/tvheadend.mkuser

Yann> diff --git a/package/Config.in b/package/Config.in Yann> index 3d556b2..bcf0009 100644
Yann> --- a/package/Config.in
Yann> +++ b/package/Config.in
Yann> @@ -682,6 +682,7 @@ source "package/tinyhttpd/Config.in"

 Yann>  source "package/tn5250/Config.in"
 Yann>  source "package/transmission/Config.in"
 Yann>  source "package/ttcp/Config.in"
 Yann> +source "package/tvheadend/Config.in"
 Yann>  source "package/udpcast/Config.in"
 Yann>  source "package/ulogd/Config.in"
 Yann>  source "package/ushare/Config.in"

Yann> diff --git a/package/tvheadend/Config.in b/package/tvheadend/Config.in Yann> new file mode 100644
Yann> index 0000000..679ca13
Yann> --- /dev/null
Yann> +++ b/package/tvheadend/Config.in
Yann> @@ -0,0 +1,20 @@
Yann> +comment "tvheadend requires a toolchain with WCHAR"

We normally add ' support' - E.G. WCHAR support.

It also needs largefile support unless you override CFLAGS in the Makefile:

Makefile:CFLAGS += -D_FILE_OFFSET_BITS=64

Yann> +++ b/package/tvheadend/tvheadend.default
Yann> @@ -0,0 +1,6 @@
Yann> +TVH_USER=tvheadend
Yann> +TVH_GROUP=tvheadend
Yann> +#TVH_ADAPTERS=
Yann> +#TVH_HTTP_PORT=9981
Yann> +#TVH_HTSP_PORT=9982
Yann> +#TVH_DEBUG=1
Yann> diff --git a/package/tvheadend/tvheadend.init b/package/tvheadend/tvheadend.init Yann> new file mode 100644
Yann> index 0000000..b05ec81
Yann> --- /dev/null
Yann> +++ b/package/tvheadend/tvheadend.init
Yann> @@ -0,0 +1,54 @@
Yann> +#! /bin/sh
Yann> +# Startup script inspired by the one in the package

It would be good to mention 'tvheadend' here.

Yann> +++ b/package/tvheadend/tvheadend.mk
Yann> @@ -0,0 +1,76 @@
Yann> +############################################################# Yann> +#
Yann> +# tvheadend
Yann> +#
Yann> +############################################################## Yann> +

 Yann> +TVHEADEND_VERSION           = v3.3
 Yann> +TVHEADEND_SITE              = http://github.com/tvheadend/tvheadend/tarball/$(TVHEADEND_VERSION)
 Yann> +TVHEADEND_LICENSE           = GPLv3+
 Yann> +TVHEADEND_LICENSE_FILES     = LICENSE
 Yann> +TVHEADEND_DEPENDENCIES      = host-pkgconf openssl python
 Yann> +
 Yann> +ifeq ($(BR2_PACKAGE_AVAHI),y)
 Yann> +TVHEADEND_DEPENDENCIES     += avahi
 Yann> +endif
 Yann> +
 Yann> +#----------------------------------------------------------------------------
 Yann> +# tvheadend is a little smuggler and thief! ;-)
 Yann> +# During the ./configure, it downloads some files from the dvb-apps
 Yann> +# package, so it has a list of pre-scanned tunner configurations.
 Yann> +# For buildroot that has a few-unfortunate consequences:
 Yann> +#  - the network may not be availabe at the time of build, if the
 Yann> +#    user pre-downloaded the sources with 'make source'
 Yann> +# So, here's what we do:
 Yann> +#  - after the main archive download, we do download those files
 Yann> +#  - after extract, we extract the required files
 Yann> +
 Yann> +TVHEADEND_DVBSCANS_VERSION  = 3fc7dfa68484
 Yann> +TVHEADEND_DVBSCANS_SITE     = http://linuxtv.org/hg/dvb-apps/archive/
 Yann> +TVHEADEND_DVBSCANS_DIR      = dvb-apps-$(TVHEADEND_DVBSCANS_VERSION)
 Yann> +TVHEADEND_DVBSCANS_SOURCE   = $(TVHEADEND_DVBSCANS_DIR).tar.bz2
 Yann> +
 Yann> +define TVHEADEND_DOWNLOAD_DVBSCANS
 Yann> +	$(call DOWNLOAD_WGET,$(TVHEADEND_DVBSCANS_SITE)/$(TVHEADEND_DVBSCANS_VERSION).tar.bz2,$(TVHEADEND_DVBSCANS_SOURCE))
 Yann> +endef
 Yann> +TVHEADEND_POST_DOWNLOAD_HOOKS        = TVHEADEND_DOWNLOAD_DVBSCANS
 Yann> +
 Yann> +define TVHEADEND_EXTRACT_DVBSCANS
 Yann> +	mkdir -p $(@D)/data/dvb-scan
 Yann> +	$(INFLATE.bz2) $(DL_DIR)/$(TVHEADEND_DVBSCANS_SOURCE)      |\
 Yann> +	$(TAR) $(TAR_STRIP_COMPONENTS)=3 -C $(@D)/data/dvb-scan     \
 Yann> +	       $(TAR_OPTIONS) -                                     \
 Yann> +	       $(TVHEADEND_DVBSCANS_DIR)/util/scan/{atsc,dvb-{c,s,t}}
 Yann> +endef
 Yann> +TVHEADEND_POST_EXTRACT_HOOKS         = TVHEADEND_EXTRACT_DVBSCANS
 Yann> +
 Yann> +#----------------------------------------------------------------------------
 Yann> +# To run tvheadend, we need:
 Yann> +#  - a non-root user to be safe, with its owned ${HOME}
 Yann> +#  - a startup script, and its config file
 Yann> +#  - a default DB with a tvheadend admin
 Yann> +TVHEADEND_MKUSER = TARGET_DIR=$(TARGET_DIR) INSTALL=$(INSTALL) package/tvheadend/tvheadend.mkuser
 Yann> +define TVHEADEND_CREATE_USER
 Yann> +	$(TVHEADEND_MKUSER) mk_user
 Yann> +	$(INSTALL) -D package/tvheadend/tvheadend.config  $(TARGET_DIR)/home/tvheadend/.hts/tvheadend/accesscontrol/1
 Yann> +endef
 Yann> +TVHEADEND_POST_INSTALL_TARGET_HOOKS  = TVHEADEND_CREATE_USER
 Yann> +
 Yann> +define TVHEADEND_PERMISSIONS
 Yann> +	/home/tvheadend                                d 0700 $$(shell $(TVHEADEND_MKUSER) get_uid) $$(shell $(TVHEADEND_MKUSER) get_gid) - - - - -
 Yann> +	/home/tvheadend/.hts                           d 0700 $$(shell $(TVHEADEND_MKUSER) get_uid) $$(shell $(TVHEADEND_MKUSER) get_gid) - - - - -
 Yann> +	/home/tvheadend/.hts/tvheadend                 d 0700 $$(shell $(TVHEADEND_MKUSER) get_uid) $$(shell $(TVHEADEND_MKUSER) get_gid) - - - - -
 Yann> +	/home/tvheadend/.hts/tvheadend/accesscontrol   d 0700 $$(shell $(TVHEADEND_MKUSER) get_uid) $$(shell $(TVHEADEND_MKUSER) get_gid) - - - - -

Yann> + /home/tvheadend/.hts/tvheadend/accesscontrol/1 f 0600 $$(shell $(TVHEADEND_MKUSER) get_uid) $$(shell $(TVHEADEND_MKUSER) get_gid) - - - - -
Yann> +endef

I'm not really happy about the user handling here. I think we should either just add a static tvheadend user to system/skeleton/etc/passwd like we've done for ssh/hal/dbus/.., or come up with some generic infrastructure to handle it per package (like _PERMISSIONS) instead of something tvheadend specific.

We also normally don't touch /home. Can't tvheadend run as system daemon (still as a seperate user) instead?

Yann> +
Yann> +define TVHEADEND_INSTALL_SYSV_STARTUP_FILES
Yann> + $(INSTALL) -D package/tvheadend/tvheadend.default $(TARGET_DIR)/etc/default/tvheadend
Yann> + $(INSTALL) -D package/tvheadend/tvheadend.init $(TARGET_DIR)/etc/init.d/S99tvheadend

I personally prefer to keep the same names both in package/ and output/target (so S99tvheadend). Makes it easier to find the corresponding source files.

Signature · 1 line
Bye, Peter Korsgaard
#4 lore raw

PATCH 1/1 package/tvheadend: new package

Peter, All,

Quoted 1 line · On Wednesday 26 December 2012 Peter Korsgaard wrote:
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Yann" == Yann E MORIN <[email protected]> writes:

[--SNIP--]

Quoted 9 lines

Yann> diff --git a/package/tvheadend/Config.in b/package/tvheadend/Config.in Yann> new file mode 100644
Yann> index 0000000..679ca13
Yann> --- /dev/null
Yann> +++ b/package/tvheadend/Config.in
Yann> @@ -0,0 +1,20 @@
Yann> +comment "tvheadend requires a toolchain with WCHAR"

We normally add ' support' - E.G. WCHAR support.

OK.

Quoted 4 lines

It also needs largefile support unless you override CFLAGS in the Makefile:

Makefile:CFLAGS += -D_FILE_OFFSET_BITS=64

LARGE_FILES that will be, then. ;-)

Quoted 10 lines

Yann> diff --git a/package/tvheadend/tvheadend.init b/package/tvheadend/tvheadend.init Yann> new file mode 100644
Yann> index 0000000..b05ec81
Yann> --- /dev/null
Yann> +++ b/package/tvheadend/tvheadend.init
Yann> @@ -0,0 +1,54 @@
Yann> +#! /bin/sh
Yann> +# Startup script inspired by the one in the package

It would be good to mention 'tvheadend' here.

OK.

Quoted 1 line

Yann> +++ b/package/tvheadend/tvheadend.mk

[--SNIP--]

Quoted 17 lines

Yann> +#---------------------------------------------------------------------------- Yann> +# To run tvheadend, we need:

 Yann> +#  - a non-root user to be safe, with its owned ${HOME}
 Yann> +#  - a startup script, and its config file
 Yann> +#  - a default DB with a tvheadend admin
 Yann> +TVHEADEND_MKUSER = TARGET_DIR=$(TARGET_DIR) INSTALL=$(INSTALL) package/tvheadend/tvheadend.mkuser
 Yann> +define TVHEADEND_CREATE_USER
 Yann> +	$(TVHEADEND_MKUSER) mk_user
 Yann> +	$(INSTALL) -D package/tvheadend/tvheadend.config  $(TARGET_DIR)/home/tvheadend/.hts/tvheadend/accesscontrol/1
 Yann> +endef
 Yann> +TVHEADEND_POST_INSTALL_TARGET_HOOKS  = TVHEADEND_CREATE_USER
 Yann> +
 Yann> +define TVHEADEND_PERMISSIONS
 Yann> +	/home/tvheadend                                d 0700 $$(shell $(TVHEADEND_MKUSER) get_uid) $$(shell $(TVHEADEND_MKUSER) get_gid) - - - - -
 Yann> +	/home/tvheadend/.hts                           d 0700 $$(shell $(TVHEADEND_MKUSER) get_uid) $$(shell $(TVHEADEND_MKUSER) get_gid) - - - - -
 Yann> +	/home/tvheadend/.hts/tvheadend                 d 0700 $$(shell $(TVHEADEND_MKUSER) get_uid) $$(shell $(TVHEADEND_MKUSER) get_gid) - - - - -
 Yann> +	/home/tvheadend/.hts/tvheadend/accesscontrol   d 0700 $$(shell $(TVHEADEND_MKUSER) get_uid) $$(shell $(TVHEADEND_MKUSER) get_gid) - - - - -
Quoted 6 lines

Yann> + /home/tvheadend/.hts/tvheadend/accesscontrol/1 f 0600 $$(shell $(TVHEADEND_MKUSER) get_uid) $$(shell $(TVHEADEND_MKUSER) get_gid) - - - - -
Yann> +endef

I'm not really happy about the user handling here. I think we should either just add a static tvheadend user to system/skeleton/etc/passwd like we've done for ssh/hal/dbus/..

That will make for an ever-increasing list of users, most will probably never, ever be usefull. I do not like that... :-(

I agree however that the solution above is less than ideal.

Quoted 3 lines

, or come up with some generic
infrastructure to handle it per package (like _PERMISSIONS) instead of something tvheadend specific.

Yes, that's something I'm thinking about...

Basically, I'd expect something like:

TVHEADEND_USER = tvheadend -1 -1 /home/tvheadend /bin/sh FOO_USER = USERNAME UID GID HOME SHELL

- if UID (GID) is -1, then a uid (gid) will be choosen arbitrarily.
- if UID (GID) is >=0 and conflicts with an other entry, the build fails
- if HOME is 'none', no home is created for that user
- if SHELL is 'none', then the shell will be set to /bin/false

Then:
- an entry is created in /etc/passwd, and the home is created before the

    package is configured (except if home=='none')

- the home is chowned (except if home=='none') using a generated _PERMISSIONS variable

Quoted 2 lines

We also normally don't touch /home. Can't tvheadend run as system daemon (still as a seperate user) instead?

It still needs a place where to store:
- its runtime configuration (that is done through the web interface and creates new files)
- the recordings

Quoted 8 lines

Yann> +
Yann> +define TVHEADEND_INSTALL_SYSV_STARTUP_FILES
Yann> + $(INSTALL) -D package/tvheadend/tvheadend.default $(TARGET_DIR)/etc/default/tvheadend
Yann> + $(INSTALL) -D package/tvheadend/tvheadend.init $(TARGET_DIR)/etc/init.d/S99tvheadend

I personally prefer to keep the same names both in package/ and output/target (so S99tvheadend). Makes it easier to find the corresponding source files.

OK.

Regards,
Yann E. MORIN.

Signature · 6 lines
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'
#5 lore raw

PATCH 1/1 package/tvheadend: new package

In reply to Yann E. MORIN

Dear Yann E. MORIN,

Quoted 19 lines · Yann E. MORIN
package/tvheadend/tvheadend.mk new file +19 -0
+#----------------------------------------------------------------------------
+# tvheadend is a little smuggler and thief! ;-)
+# During the ./configure, it downloads some files from the dvb-apps
+# package, so it has a list of pre-scanned tunner configurations.
+# For buildroot that has a few-unfortunate consequences:
+#  - the network may not be availabe at the time of build, if the
+#    user pre-downloaded the sources with 'make source'
+# So, here's what we do:
+#  - after the main archive download, we do download those files
+#  - after extract, we extract the required files
+
+TVHEADEND_DVBSCANS_VERSION  = 3fc7dfa68484
+TVHEADEND_DVBSCANS_SITE     = http://linuxtv.org/hg/dvb-apps/archive/
+TVHEADEND_DVBSCANS_DIR      = dvb-apps-$(TVHEADEND_DVBSCANS_VERSION)
+TVHEADEND_DVBSCANS_SOURCE   = $(TVHEADEND_DVBSCANS_DIR).tar.bz2
+
+define TVHEADEND_DOWNLOAD_DVBSCANS
+	$(call DOWNLOAD_WGET,$(TVHEADEND_DVBSCANS_SITE)/$(TVHEADEND_DVBSCANS_VERSION).tar.bz2,$(TVHEADEND_DVBSCANS_SOURCE))
+endef

package/tvheadend/tvheadend.mk line 45

Quoted 10 lines
package/tvheadend/tvheadend.mk new file +10 -0
+TVHEADEND_POST_DOWNLOAD_HOOKS        = TVHEADEND_DOWNLOAD_DVBSCANS
+
+define TVHEADEND_EXTRACT_DVBSCANS
+	mkdir -p $(@D)/data/dvb-scan
+	$(INFLATE.bz2) $(DL_DIR)/$(TVHEADEND_DVBSCANS_SOURCE)      |\
+	$(TAR) $(TAR_STRIP_COMPONENTS)=3 -C $(@D)/data/dvb-scan     \
+	       $(TAR_OPTIONS) -                                     \
+	       $(TVHEADEND_DVBSCANS_DIR)/util/scan/{atsc,dvb-{c,s,t}}
+endef
+TVHEADEND_POST_EXTRACT_HOOKS         = TVHEADEND_EXTRACT_DVBSCANS

I think this part should be moved to a separate package, say "dvb-apps", on which tvheadend would depend. It can install its stuff in $(STAGING_DIR), for example, and then you can symlink $(@D)/data/dvb-scan of tvheadend to the right directory in $(STAGING_DIR), or better, modify a bit tvheadend so that it can take an argument specifying where the dvb-data is to be found.

Best regards,

Thomas

Signature · 4 lines
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com
#6 lore raw

PATCH 1/1 package/tvheadend: new package

Thomas, All,

Quoted 29 lines · On Thursday 27 December 2012 Thomas Petazzoni wrote:
Quoted 28 lines · Yann E. MORIN
package/tvheadend/tvheadend.mk new file +28 -0
+#----------------------------------------------------------------------------
+# tvheadend is a little smuggler and thief! ;-)
+# During the ./configure, it downloads some files from the dvb-apps
+# package, so it has a list of pre-scanned tunner configurations.
+# For buildroot that has a few-unfortunate consequences:
+#  - the network may not be availabe at the time of build, if the
+#    user pre-downloaded the sources with 'make source'
+# So, here's what we do:
+#  - after the main archive download, we do download those files
+#  - after extract, we extract the required files
+
+TVHEADEND_DVBSCANS_VERSION  = 3fc7dfa68484
+TVHEADEND_DVBSCANS_SITE     = http://linuxtv.org/hg/dvb-apps/archive/
+TVHEADEND_DVBSCANS_DIR      = dvb-apps-$(TVHEADEND_DVBSCANS_VERSION)
+TVHEADEND_DVBSCANS_SOURCE   = $(TVHEADEND_DVBSCANS_DIR).tar.bz2
+
+define TVHEADEND_DOWNLOAD_DVBSCANS
+	$(call DOWNLOAD_WGET,$(TVHEADEND_DVBSCANS_SITE)/$(TVHEADEND_DVBSCANS_VERSION).tar.bz2,$(TVHEADEND_DVBSCANS_SOURCE))
+endef
+TVHEADEND_POST_DOWNLOAD_HOOKS        = TVHEADEND_DOWNLOAD_DVBSCANS
+
+define TVHEADEND_EXTRACT_DVBSCANS
+	mkdir -p $(@D)/data/dvb-scan
+	$(INFLATE.bz2) $(DL_DIR)/$(TVHEADEND_DVBSCANS_SOURCE)      |\
+	$(TAR) $(TAR_STRIP_COMPONENTS)=3 -C $(@D)/data/dvb-scan     \
+	       $(TAR_OPTIONS) -                                     \
+	       $(TVHEADEND_DVBSCANS_DIR)/util/scan/{atsc,dvb-{c,s,t}}
+endef
Quoted 8 lines
Quoted 1 line

+TVHEADEND_POST_EXTRACT_HOOKS = TVHEADEND_EXTRACT_DVBSCANS

I think this part should be moved to a separate package, say "dvb-apps", on which tvheadend would depend. It can install its stuff in $(STAGING_DIR), for example, and then you can symlink $(@D)/data/dvb-scan of tvheadend to the right directory in $(STAGING_DIR), or better, modify a bit tvheadend so that it can take an argument specifying where the dvb-data is to be found.

I knew this would raise eyebrows.
I'll see what I can come up with...

Regards,
Yann E. MORIN.

Signature · 6 lines
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'