Building » History » Revision 14
« Previous |
Revision 14/32
(diff)
| Next »
Bob Lightfoot, 2015-03-18 22:14
Building¶
Prerequisites¶
Before you can build Tvheadend you will need several packages installed on your development machine.
The specific details will vary between distributions so we only cover the major ones here.
Debian/Ubuntu¶
$ sudo aptitude install build-essential git pkg-config libssl-dev bzip2 wget
Optional:
$ sudo aptitude install libavahi-client-dev zlib1g-dev libavcodec-dev libavutil-dev libavformat-dev libswscale-dev
Redhat¶
Redhat/Centos/Fedora Build assumptions¶
Redhat/Centos/Fedora are a package managed OS and as such tvheadend should be installed from an rpm on a production system. This set of instructions details using tools git, mock and rpmbuild to package the source into an rpm and then install the rpm
Build Environment Configuration¶
install the software used for building tvheadened
$sudo yum install git mock
create a user to do the building as
$sudo useradd mock
$sudo passwd mock
for more details view the Centos/Fedora Mock pages starting
http://fedoraproject.org/wiki/Projects/Mock
Getting the files to work with¶
tvheadend sources are retrieved as follow
$su mock
$mkdir git
$cd git
$ git clone https://github.com/tvheadend/tvheadend.git
create a workfiles holding directory
$mkdir ~/tvheadend
you'll also need a starter source rpm and specfile found through one of the following in the ~/tvheadend folder:
https://tvheadend.org/boards/4/topics/14666
https://tvheadend.org/attachments/download/2823/tvheadend-4.0.01012015-1.src.rpm
https://tvheadend.org/attachments/download/2738/tvheadend-4.0.01012015-1.spec
Step by Step Building the RPM¶
enter the local git repository and reset local to most current remote
$cd ~/git/tvheadend
$git fetch origin
$git reset --hard origin/master
determine the commit id of the master branch
$git show-ref --head
create the spec file for the next version note new and old are the date-revision strings
$cp tvheadend-old.spec tvheadend-new.spec
open the new spec and edit as follows
update the global commit string to match the current master commit
change the version string to match the new being built
change the git archive comment line to be the correct values commit tag and filename
change the source0 filename also
save the spec file for use later
$vi tvheadend-new
switch to the git tvheadened master and export the archive file called for in the new spec to the ~/tvheadend folder
$cd ~/git/tvheadend
$git archive 96898a66e96927e4ace9a637ea923fd9f514dd1d --format=tar --prefix=tvheadend/ | gzip > ../tvheadend-4.0.03182015.tar.gz
$mv ../tvheadend-4.0.03182015.tar.gz ~/tvheadend
mock setup
{for Fedora you'll need to use the rpmfusion environment}
(for centos you'll need to use nuxro's repos as an environment}
the /etc/mock/nux-7-x86_64.cfg can be created by adding following to the epel7.cfg and renaming as saved
[nux-dextop] name=Nux.Ro RPMs for general desktop use baseurl=http://li.nux.ro/download/nux/dextop/el7/$basearch/ http://mirror.li.nux.ro/li.nux.ro/nux/dextop/el7/$basearch/ enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-nux.ro protect=0 [nux-dextop-testing] name=Nux.Ro RPMs for general desktop use - testing baseurl=http://li.nux.ro/download/nux/dextop-testing/el7/$basearch/ enabled=0 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-nux.ro protect=0mock clean the mock build environment
$mock --init -r nux-7-x86_64now build the previous version in the clean environment
$mock -r nux-7-x86_64 --rebuild tvheadend-4.0.01012015-1.src.rpmcopy in the new source tar and spec files
$mock -r nux-7-x86_64 --no-clean --copyin tvheadend-4.0.03182015.tar.gz builddir/build/SOURCES/ $mock -r nux-7-x86_64 --no-clean --copyin tvheadend-4.0.03182015-1.spec builddir/build/SPECS/tvheadend.specshell in and confirm new source and spec are present and then build new src.rpm
$mock -r nux-7-x86_64 --no-clean --shell <mock>$ls -lah builddir/build/SOURCES <mock>$ls -lah builddir/build/SPECS <mock>$rpmbuild -bs builddir/build/SPECS/tvheadend.spec <mock>$exitcopy out the new src.rpm
$mock -r nux-7-x86_64 --no-clean --copyout builddir/build/SRPMS/tvheadend-4.0.03182015-1.src.rpm ./build the new version from the source rpm
$mock -r nux-7-x86_64 --rebuild tvheadend-4.0.03182015-1.src.rpmmove the results to your working folder
$cp /var/lib/mock/nux-7-x86_64/result/*.rpm ./
Install the RPM
$ sudo yum install /home/mock/tvheadend/tvheadend-4.0.03182015-1.x86_64.rpm
Gentoo¶
TODO: this needs adding
Get Source¶
Next you must obtain the source code, this is hosted on github.
To clone the repository simple run the command:
$ git clone https://github.com/tvheadend/tvheadend.git
Configuring¶
TVHeadend comes with a configuration script that allows you to enable/disable optional components and set install paths, etc.
Most people will be fine with the defaults and can run:
$ ./configure
However for more advanced options, please run the following:
$ ./configure --help
And then re-run configure with the required options, i.e.:
$ ./configure --disable-dvbscan
Compiling¶
To compile Tvheadend run:
$ make
Installing¶
It is possible to install Tvheadend using make, based on the ./configure options, by running:
$ sudo make install
However it's recommend that you run from the build directory for development/testing (see Development):
$ ./build.linux/tvheadend
NOTE: its VERY important you run test builds from git root, so command should look similar to above.
And that you build a package if you wish to install Tvheadend permanently and hook into the system start scripts etc.
Use of make install is not very traceable and so removal can sometimes be painful, and it might overwrite an existing installation.
Packaging¶
For more information about packaging Tvheadend please see here
Reporting Problems¶
If you have problems with a custom compiled version of Tvheadend its important that any issue reports include details of the specific version of source you used. For more details please see here.
Updated by Bob Lightfoot over 9 years ago · 14 revisions