I asked about the availability of Tvheadend on OpenWrt some time ago and was surprised that it existed and I could install it using
opkg install tvheadend
The version available (on OpenWrt) is 4.0.10-1 which is quite a bit behind other platforms. Is it possible to build my own version and if so how do I set about it?
As a transcoder sure thats to much to ask from a router, but for streaming media a lot of routers are perfectly suited. The wrt1200/1900/32x all have full speed sata/usb3 ports, which is more than enough for streaming. With the new 10-14 TB drives you can have a sizeable media collection via a inexpensive device, that's already on 24/7.
The makefile will be in ./feeds/packages/multimedia/tvheadend once you've updated the feeds.
Custom packages that are build with the SDK or the build system can be installed on the "matching" system with opkg. At least in my opinion building an entire, self-consistent image is the "preferred" path, especially with something as large and complex as a media server. (When you install with opkg, you don't get the benefit of compression into the ROM.)
gitk and rsync not required or used by OpenWrt builds, AFAIK
I use ccache in my builds, which is supported by OpenWrt (which may build its own, I haven't confirmed)
So, do I have to use an seperate Linux system and not SSH with the router to build this? I don't understand how you would get the compiled program on to the router though.
Just curious, couldn't you guys just update Tvheadend package so we don't have to build it from source? That way when a user runs 'opkg install tvheadend' it would install a current version.
That is correct, a running Linux-based "desktop" system is required (a VM with 32 GB of storage will work for Debian, last I checked). It is close to impossible to build OpenWrt on a running OpenWrt system.
If you're building a package, at least in my opinion, you might as well build the entire image and flash it to your device. You can build packages with the SDK that exactly matches your kernel version, but the system requirements for that are just about the same and you don't get the compression advantage of including the package in your custom ROM.
"You guys" often comes down to a motivated individual making the changes and submitting a patch or pull request. With something "far off the beaten track", the number of "motivated individuals" is very small. Build errors are often fixed, but keeping up with version updates for a "rare" package isn't a high priority for most.
You'll need to "bump" the PKG_RELEASE, change the PKG_VERSION and then adjust the PKG_HASH. You can download the tarball yourself and compute the, as I recall, sha256 hash. The build system, as I recall, will also throw a warning or error and show the hash it computed.
Then it comes down to trying to build it and resolving any significant warnings (Use V=s with make) and errors.
Edit: I'd remove the patches first, as they may well have been resolved in the upstream source by now.
I would first confirm that your build environment is properly set up, as well as "priming" the toolchain for the right target with
make menuconfig
and selecting your target and device and, under developer options, enable ccache.
Then, you should be able to run
make -j12 clean download toolchain/install world
to eventually get what should be a functional, flashable image (no LuCI).
Change -j12 to the number of cores you have, or one or two less if you want to use the machine while it's building. Grab a drink. Building the cross-compile toolchain takes a while, but it's usually a "once" task.
Once that completes successfully, then you can start trying to build the package
make package/tvheadend/install V=s
and start to work through any issues that come up.
With a full build system, there usually isn't a need for the SDK -- you use the build system itself.
And that's why it crashed. I'm running it on an old first generation core i3. lol
Why does it keep saying this?
make -r install/toolchain: build failed. Please re-run make with -j1 V=s or V=sc for a higher verbosity level to see what's going on
make: *** [/home/rob/dev/openwrt/include/toplevel.mk:227: install/toolchain] Error 1