#!/bin/bash
# Bootstrapper to semi-automatically build avidemux deb/rpm from source
# (c) Mean 2009
#
packages_ext=""
do_core=1
do_cli=0
do_gtk=0
do_qt4=1
do_plugins=1
debug=0
export O_PARAL="-j 2"
fail()
{
echo "** Failed at $1**"
exit 1
}
Process()
{
export BUILDDIR=$1
export SOURCEDIR=$2
export EXTRA=$3
export DEBUG=""
BUILDER="Unix Makefiles"
if [ "x$debug" = "x1" ] ; then
DEBUG="-DVERBOSE=1 -DCMAKE_BUILD_TYPE=Debug "
BUILDDIR="${BUILDDIR}_debug"
BUILDER="CodeBlocks - Unix Makefiles"
fi
FAKEROOT=" -DFAKEROOT=$FAKEROOT_DIR "
echo "Building $BUILDDIR from $SOURCEDIR with EXTRA=<$EXTRA>, DEBUG=<$DEBUG>"
rm -Rf ./$BUILDDIR
mkdir $BUILDDIR || fail mkdir
cd $BUILDDIR
cmake $PKG $FAKEROOT -DCMAKE_EDIT_COMMAND=vim -DAVIDEMUX_SOURCE_DIR=$TOP -DCMAKE_INSTALL_PREFIX=/usr $EXTRA $DEBUG -G "$BUILDER" $SOURCEDIR || fail cmakeZ
make $PARAL >& /tmp/log$BUILDDIR || fail "make, result in /tmp/log$BUILDDIR"
if [ "x$PKG" != "x" ] ; then
$FAKEROOT_COMMAND make package DESTDIR=$FAKEROOT_DIR/tmp || fail package
fi
make install DESTDIR=$FAKEROOT_DIR
}
printModule()
{
value=$1
name=$2
if [ "x$value" = "x1" ]; then echo " $name will be built"
else echo " $name will be skipped"
fi
}
config()
{
echo "Build configuration :"
echo "******************* :"
echo "Build type :"
if [ "x$debug" = "x1" ] ; then echo "Debug build"
else echo "Release build"
fi
printModule $do_core Core
printModule $do_gtk Gtk
printModule $do_qt4 Qt4
printModule $do_cli Cli
printModule $do_plugins Plugins
}
usage()
{
echo "Bootstrap avidemux 2.6:"
echo "***********************"
echo " --help : Print usage"
echo " --rpm : Build rpm packages"
echo " --deb : Build deb packages"
echo " --tgz : Build tgz packages"
echo " --debug : Switch debugging on"
echo " --with-core : Build core"
echo " --without-core : Dont build core"
echo " --with-cli : Build cli"
echo " --without-cli : Dont build cli"
echo " --with-gtk : Build gtk"
echo " --without-gtk : Dont build gtk"
echo " --with-core : Build core"
echo " --without-qt4 : Dont build qt4"
echo " --with-plugins : Build plugins"
echo " --without-plugins : Dont build plugins"
echo "The end result will be in the install folder. You can then copy it to / or whatever"
config
}
#
export FAKEROOT_COMMAND="fakeroot"
CMAKE_VERSION=`cmake --version | sed "s/^.*2/2/g"`
echo "CMAKE Version : $CMAKE_VERSION"
case "$CMAKE_VERSION" in
2.8.8|2.8.7|2.8.9)
echo "Cmake version >=2.8.7 doesnt need fakeroot"
export FAKEROOT_COMMAND=""
;;
esac
# Could probably do it with getopts...
while [ $# != 0 ] ;do
case "$1" in
-h|--help)
usage
exit 1
;;
--debug)
debug=1
;;
--tgz)
packages_ext=tar.gz
PKG="$PKG -DAVIDEMUX_PACKAGER=tgz"
;;
--deb)
packages_ext=deb
PKG="$PKG -DAVIDEMUX_PACKAGER=deb"
;;
--rpm)
packages_ext=rpm
PKG="$PKG -DAVIDEMUX_PACKAGER=rpm"
;;
--without-qt4)
do_qt4=0
;;
--without-cli)
do_cli=0
;;
--without-gtk)
do_gtk=0
;;
--without-plugins)
do_plugins=0
;;
--without-core)
do_core=0
;;
--with-qt4)
do_qt4=1
;;
--with-cli)
do_cli=1
;;
--with-gtk)
do_gtk=1
;;
--with-plugins)
do_plugins=1
;;
--with-core)
do_core=1
;;
*)
echo "unknown parameter $1"
usage
exit 1
;;
esac
shift
done
config
echo "**BootStrapping avidemux **"
export TOP=$PWD
export POSTFIX=""
export FAKEROOT_DIR=$PWD/install
echo "Top dir : $TOP"
echo "Fake installation directory=$FAKEROOT_DIR"
if [ "x$debug" = "x1" ] ; then echo
POSTFIX="_debug"
fi
if [ "x$packages_ext" = "x" ]; then
echo ""
else
rm -Rf $FAKEROOT_DIR
mkdir -p $FAKEROOT_DIR
fi
if [ "x$do_core" = "x1" ] ; then
echo "** CORE **"
cd $TOP
export PARAL=""
Process buildCore ../avidemux_core
echo " Installing core"
cd $TOP/buildCore${POSTFIX}
fi
export PARAL="$O_PARAL"
if [ "x$do_qt4" = "x1" ] ; then
echo "** QT4 **"
cd $TOP
Process buildQt4 ../avidemux/qt4
echo " Installing Qt4"
cd $TOP/buildQt4${POSTFIX}
fi
if [ "x$do_cli" = "x1" ] ; then
echo "** CLI **"
cd $TOP
Process buildCli ../avidemux/cli
echo " Installing cli"
cd $TOP/buildCli${POSTFIX}
fi
if [ "x$do_gtk" = "x1" ] ; then
echo "** GTK **"
cd $TOP
Process buildGtk ../avidemux/gtk
echo " Installing Gtk"
cd $TOP/buildGtk${POSTFIX}
fi
if [ "x$do_plugins" = "x1" ] ; then
echo "** Plugins **"
cd $TOP
Process buildPluginsCommon ../avidemux_plugins -DPLUGIN_UI=COMMON
fi
if [ "x$do_plugins" = "x1" -a "x$do_qt4" = "x1" ] ; then
echo "** Plugins Qt4 **"
cd $TOP
Process buildPluginsQt4 ../avidemux_plugins -DPLUGIN_UI=QT4
fi
if [ "x$do_plugins" = "x1" -a "x$do_gtk" = "x1" ] ; then
echo "** Plugins Gtk **"
cd $TOP
Process buildPluginsGtk ../avidemux_plugins -DPLUGIN_UI=GTK
fi
if [ "x$do_plugins" = "x1" -a "x$do_cli" = "x1" ] ; then
echo "** Plugins CLI **"
cd $TOP
Process buildPluginsCLI ../avidemux_plugins -DPLUGIN_UI=CLI
fi
echo "** Preparing debs **"
cd $TOP
if [ "x$packages_ext" = "x" ]; then
echo "No packaging"
else
echo "Preparing packages"
rm -Rf debs
mkdir debs
find . -name "*.$packages_ext" | grep -vi cpa | xargs cp -t debs
echo "** debs directory ready **"
ls -l debs
fi
echo "** ALL DONE **"
if [ "x$packages_ext" = "x" ]; then
echo "** Copy the $FAKEROOT_DIR folder to your favorite location, i.e. sudo cp -R install/usr/* /usr/ **"
else
echo "** The installable packages are in the debs folder **"
fi