Difference between revisions of "Mythtv-rpmbuild.spec"

From MythTV Official Wiki
Jump to: navigation, search
Line 1: Line 1:
This spec is for building MythTV RPM packages from a subversion checkout.
+
This spec is for building MythTV RPM packages from a git checkout.
 
It should be used along with the build_myth.sh shell script included
 
It should be used along with the build_myth.sh shell script included
at the bottom of this page.
+
at the following link: https://github.com/MythTV/packaging/tree/master/rpm
 
 
Both of these ( the mentioned shell script, and the .spec file) are now primarily located in the subversion repository, and thus the latest version is available for download from this link:
 
http://svn.mythtv.org/svn/trunk/packaging/rpm/
 
  
 
This will presumably work with any version of fedora from version 5 onward, and expects that you are pulling your packages from livna/rpmfusion.
 
This will presumably work with any version of fedora from version 5 onward, and expects that you are pulling your packages from livna/rpmfusion.
Line 10: Line 7:
  
 
Please read the documentation at the top of the file before using it.
 
Please read the documentation at the top of the file before using it.
 
====build_myth.sh====
 
 
<pre>
 
#!/bin/bash
 
 
#
 
# Script for building MythTV packages from an SVN checkout.
 
#
 
# by:  Chris Petersen <rpm@forevermore.net>
 
#
 
# The latest version of this file can be found at:
 
#
 
#    http://www.mythtv.org/wiki/index.php/Mythtv-svn-rpmbuild.spec
 
#
 
# This file is intended to be sourced into bash with the "." command,
 
# not just run directly on the command line.  If you just run this as
 
# ./build_myth.sh you will not load the installmyth function into your
 
# environment, and will be unable to install packages should you choose
 
# to put off doing so immediately after compiling.
 
#
 
# Please make sure that the rpm build parameters are to your liking (a
 
# number of plugins are disabled by default/example in this script to
 
# show you that the spec is capable of compiling only those plugins that
 
# you wish to install).  The same goes for the installmyth function,
 
# which only installs those packages which I personally use.
 
#
 
# I will eventually clean up this script to add parameters and make it
 
# a little easier to configure/use.
 
#
 
 
# A function to build mythtv
 
    function buildmyth {
 
        REV="$1"
 
        DIR=/usr/src/mythtv-svn
 
        VERSION="0.22"
 
    # Remove the existing libmyth-devel so it doesn't confuse qmake
 
    # (we can't override the order of the include file path)
 
        echo "Removing existing libmyth-devel package to avoid conflicts"
 
        sudo rpm -e libmyth-devel
 
    # Check out or update the svn checkout
 
        if [ -d "$DIR" ]; then
 
            if [ -z "$REV" -o 0"$REV" -lt 1 ]; then
 
                echo "Updating svn checkout"
 
                REL=`svn up "$DIR"`
 
            else
 
                echo "Updating svn checkout to r$REV"
 
                REL=`svn up -r "$REV" "$DIR"`
 
            fi
 
        else
 
            if [ -z "$REV" -o 0"$REV" -lt 1 ]; then
 
                echo "Checking out mythtv-svn to $DIR"
 
                REL=`svn co http://svn.mythtv.org/svn/trunk/ "$DIR"`
 
            else
 
                echo "Checking out mythtv-svn r$REV to $DIR"
 
                REL=`svn co -r "$REV" http://svn.mythtv.org/svn/trunk/ "$DIR"`
 
            fi
 
        fi
 
        if [ $? != 0 ]; then
 
            echo "Problem with svn checkout"
 
            return $?
 
        fi
 
        REL=`echo "$REL" | grep -i revision | sed -e 's/[^0-9]\\+//g'`
 
        echo "SVN Revision $REL"
 
    # Update SPEC
 
        echo "Update specfile _svnver to r$REL"
 
        sed -i \
 
            -e "s,define _svnrev .\+,define _svnrev r$REL," \
 
            -e "s,define branch .\+,define branch trunk,"  \
 
            -e "s,Version:.\+,Version: $VERSION,"          \
 
            /usr/src/redhat/SPECS/mythtv-svn.spec
 
    # Create the appropriate tarballs
 
        echo "Creating tarballs"
 
        cd "$DIR"
 
        for file in mythtv mythplugins; do
 
            mv "$file" "$file-$VERSION"
 
            tar jcf /usr/src/redhat/SOURCES/mythtv/$file-$VERSION.tar.bz2 --exclude .svn "$file-$VERSION"
 
            mv "$file-$VERSION" "$file"
 
        done
 
        cd -
 
    # Build
 
#            --with debug            \
 
        rpmbuild -bb /usr/src/redhat/SPECS/mythtv-svn.spec \
 
            --without mytharchive  \
 
            --without mythflix      \
 
            --without mythgallery  \
 
            --without mythcontrols  \
 
            --without mythgame      \
 
            --without mythphone    \
 
            --without mythbrowser  \
 
            --without mythmovies    \
 
            --without mythnews      \
 
            --without mythzoneminder
 
    # Error?
 
        if [ "$?" -ne 0 ]; then
 
            echo "Build error."
 
            return
 
        fi
 
    # Install
 
        echo -n "Install r$REL? [n] "
 
        read INST
 
        if [ "$INST" = "y" -o "$INST" = "Y" -o "$INST" = "yes" ]; then
 
            installmyth "$VERSION" "$REL"
 
        else
 
            echo "If you wish to install later, just run: installmyth \"$VERSION\" \"$REL\""
 
        fi
 
    }
 
 
# A separate function to install mythtv packages, so it can be called separately
 
    function installmyth {
 
        VERSION="$1"
 
        REL="$2"
 
        sudo rpm -Uvh --force                                                            \
 
            /usr/src/redhat/RPMS/x86_64/mythtv-docs-$VERSION-0.1.svn.r$REL.*.rpm        \
 
            /usr/src/redhat/RPMS/x86_64/libmyth-$VERSION-0.1.svn.r$REL.*.rpm            \
 
            /usr/src/redhat/RPMS/x86_64/libmyth-devel-$VERSION-0.1.svn.r$REL.*.rpm      \
 
            /usr/src/redhat/RPMS/x86_64/mythtv-base-themes-$VERSION-0.1.svn.r$REL.*.rpm  \
 
            /usr/src/redhat/RPMS/x86_64/mythtv-frontend-$VERSION-0.1.svn.r$REL.*.rpm    \
 
            /usr/src/redhat/RPMS/x86_64/mythtv-backend-$VERSION-0.1.svn.r$REL.*.rpm      \
 
            /usr/src/redhat/RPMS/x86_64/mythtv-setup-$VERSION-0.1.svn.r$REL.*.rpm        \
 
            /usr/src/redhat/RPMS/x86_64/mythtv-common-$VERSION-0.1.svn.r$REL.*.rpm      \
 
            /usr/src/redhat/RPMS/x86_64/perl-MythTV-$VERSION-0.1.svn.r$REL.*.rpm        \
 
            /usr/src/redhat/RPMS/x86_64/python-MythTV-$VERSION-0.1.svn.r$REL.*.rpm      \
 
            /usr/src/redhat/RPMS/x86_64/mythmusic-$VERSION-0.1.svn.r$REL.*.rpm          \
 
            /usr/src/redhat/RPMS/x86_64/mythvideo-$VERSION-0.1.svn.r$REL.*.rpm          \
 
            /usr/src/redhat/RPMS/x86_64/mythweather-$VERSION-0.1.svn.r$REL.*.rpm        \
 
            /usr/src/redhat/RPMS/x86_64/mythtv-debuginfo-$VERSION-0.1.svn.r$REL.*.rpm
 
    }
 
 
# Actually build the packages.
 
    buildmyth
 
</pre>
 
  
 
[[Category:Scripts]]
 
[[Category:Scripts]]

Revision as of 21:49, 23 December 2010

This spec is for building MythTV RPM packages from a git checkout. It should be used along with the build_myth.sh shell script included at the following link: https://github.com/MythTV/packaging/tree/master/rpm

This will presumably work with any version of fedora from version 5 onward, and expects that you are pulling your packages from livna/rpmfusion. If you use ATrpms, you will probably need to rename a couple of the dependencies to compensate for their different naming scheme.

Please read the documentation at the top of the file before using it.