Mythtv-svn-rpmbuild.spec
From MythTV
This spec is for building MythTV RPM packages from a subversion checkout. It should be used along with the build_myth.sh shell script included at the bottom of this page.
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. 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.
build_myth.sh
#!/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
