Blame autobuild/synfigstudio-linux-build.sh

2336ea
#!/bin/bash
2336ea
#
2336ea
# SynfigStudio build script
2336ea
# Copyright (c) 2008-2010 Konstantin Dmitriev
2336ea
#
2336ea
# This package is free software; you can redistribute it and/or
2336ea
# modify it under the terms of the GNU General Public License as
2336ea
# published by the Free Software Foundation; either version 2 of
2336ea
# the License, or (at your option) any later version.
2336ea
#
2336ea
# This package is distributed in the hope that it will be useful,
2336ea
# but WITHOUT ANY WARRANTY; without even the implied warranty of
2336ea
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
2336ea
# General Public License for more details.
2336ea
2336ea
# = Usage: =
2336ea
#    ./synfigstudio-linux-build.sh [mode] [revision]
2336ea
#
2336ea
# where:
2336ea
#   - [mode] is full|quick|package
2336ea
#   - [revision] - commit id, branch or tag (package mode only)
2336ea
#
2336ea
# To build packages it's required to run this script as root.
2336ea
#
2336ea
# = Examples: =
2336ea
#
2336ea
# == Standart mode ==
2336ea
# Configure and (re)build synfigstudio into your homedir:
2336ea
#    ./synfigstudio-linux-build.sh
2336ea
# Configure and make clean build synfigstudio into your homedir:
2336ea
#    ./synfigstudio-linux-build.sh full
2336ea
# Quick rebuild of synfig (without configure) into your homedir:
2336ea
#    ./synfigstudio-linux-build.sh quick
2336ea
#
2336ea
# == Package mode ==
2336ea
# Build package from "master" branch:
2336ea
#    ./synfigstudio-linux-build.sh package
2336ea
# Build package from "genete_setup_dialog" branch
2336ea
#    ./synfigstudio-linux-build.sh package origin/genete_setup_dialog
2336ea
# Build package from commit with "synfigstudio-0.62.00" tag
2336ea
#    ./synfigstudio-linux-build.sh package synfigstudio-0.62.00
2336ea
#
e9a26c
# Note: Make sure to run "git clean -f -x -d" after you switch branches.
e9a26c
#
2336ea
# = TODO =
2336ea
# - debuginfo packages
2336ea
11ae4c
RELEASE=8
7388f3
4ef316
if [ -z "$PREFIX" ]; then
2336ea
PREFIX=$HOME/synfig/
4ef316
fi
2336ea
2336ea
PACKAGES_PATH=$HOME/synfig-packages     	# path where to write packages files
22d5b4
04ec92
if [ -z $BUILDROOT ]; then
dbf8b7
PACKAGES_BUILDROOT=$HOME/synfig-buildroot	# path of for build infrastructure
41ab0a
else
41ab0a
PACKAGES_BUILDROOT=$BUILDROOT/synfig-buildroot
41ab0a
fi
22d5b4
if [ -d "$PACKAGES_BUILDROOT" ]; then
22d5b4
PACKAGES_BUILDROOT=`cd $PACKAGES_BUILDROOT; pwd`	# canonify buildroot path
22d5b4
fi
22d5b4
19f90d
BUILDROOT_VERSION=9
357e9e
BUILDROOT_LIBRARY_SET_ID=4
1ef084
MAKE_THREADS=2					#count of threads for make
2336ea
2336ea
# full = clean, configure, make
2336ea
# standart = configure, make
2336ea
# quick = make
2336ea
# package = chroot, clean, configure, make
2336ea
MODE='standart'
2336ea
OPENGL=0
2336ea
BREED=
c6affe
if [ -z $DEBUG ]; then
c6affe
	export DEBUG=0
c6affe
fi
2336ea
2339b4
export EMAIL='root@synfig.org'
2339b4
ef7733
# Bundled libraries
357e9e
LIBSIGCPP=2.2.10
2336ea
GLEW=1.5.1
2dade7
CAIROMM=1.8.0
befb44
IMAGEMAGICK=6.8.6
09be05
PANGOMM=2.26.3		# required by GTKMM 2.20.3
e4ba4e
GTKMM=3.0.0 		# !!! we need Notebook.set_action_widget()
2336ea
FTGL=2.1.2
2336ea
FREEGLUT=2.4.0
2336ea
GTKGLEXT=1.2.0
2336ea
GTKGLEXTMM=1.2.0
2dade7
LIBXMLPP=2.22.0
09be05
GLIBMM=2.24.2		# required by GTKMM 2.20.3
ef7733
CAIRO=1.12.0		# required by the cairo render engine 2013-04-01
19f90d
BOOST=1_53_0
2dade7
ef7733
# System libraries
09be05
ATK=1.29.4			# required by GTK 2.20.1
09be05
GLIB=2.24.2			# required by GLIBMM 2.24.2
e4ba4e
GTK=3.0.0			# !!! we need Notebook.set_action_widget()
32d272
PIXMAN=0.22.0		# required by CAIRO 1.12.0
2dade7
PANGO=1.24.5
21567c
FONTCONFIG=2.5.0
a39cec
JACK=0.124.1
19f90d
2dade7
2336ea
GITVERSION=1.7.0   # git version for chroot environment
2336ea
2336ea
SYNFIG_REPO_DIR=''
2336ea
WORKDIR_IS_REPO=0
2336ea
2336ea
# Allow overriding PREFIX and/or BREED
2336ea
if [ -f "./synfigstudio-build.conf" ] ; then
2336ea
	. "./synfigstudio-build.conf"
2336ea
fi
2336ea
24a789
# enable ccache for speedup
24a789
if which ccache > /dev/null; then
24a789
    echo "ccache found! Enabling ccache..."
24a789
	
24a789
	# set CC/CXX variables if it is not already
24a789
	if [ -z $CC ]; then
24a789
		export CC=gcc
24a789
	fi
24a789
	if [ -z $CXX ]; then
24a789
		export CXX=g++
24a789
	fi
24a789
24a789
    export CC="ccache $CC"
24a789
    export CXX="ccache $CXX"
24a789
    echo "CC=$CC"
24a789
    echo "CXX=$CXX"
24a789
else
24a789
    echo "ccache not found..."
24a789
fi
24a789
24a789
MAKE_OPTIONS="-j$MAKE_THREADS --silent LIBTOOLFLAGS=--silent"
24a789
CFLAGS="-fdiagnostics-color=always $CFLAGS"
24a789
CXXFLAGS="-fdiagnostics-color=always $CXXFLAGS"
24a789
24a789
24a789
2336ea
set -e
2336ea
86b25b
travis_fold_start() {
27a045
	if [ -n "$TRAVIS" ]; then
86b25b
		echo -e "travis_fold:start:$1\033[33;1m$2\033[0m"
86b25b
	fi
86b25b
}
86b25b
86b25b
travis_fold_end() {
86b25b
27a045
	if [ -n "$TRAVIS" ]; then
86b25b
		echo -e "\ntravis_fold:end:$1\r"
86b25b
	fi
86b25b
}
86b25b
2336ea
if (test "$2"); then
2336ea
	SELECTEDREVISION=$2
2336ea
else
2336ea
	SELECTEDREVISION=origin/master
2336ea
fi
2336ea
2336ea
mklibsigcpp()
2336ea
{
16922f
if ! pkg-config sigc\+\+-2.0 --exact-version=${LIBSIGCPP}  --print-errors; then
2336ea
	pushd /source
357e9e
	wget -c --no-check-certificate http://ftp.gnome.org/pub/GNOME/sources/libsigc++/${LIBSIGCPP%.*}/libsigc++-${LIBSIGCPP}.tar.bz2
357e9e
	[ ! -d libsigc++-${LIBSIGCPP} ] && tar -xjf libsigc++-${LIBSIGCPP}.tar.bz2 #&& cd libsigc++-${LIBSIGCPP} && patch -p1 < ../libsigc++-2.0_2.0.18-2.diff && cd ..
2336ea
	cd libsigc++-${LIBSIGCPP}
2336ea
	#make clean || true
Carlos Lopez ec891a
	./configure --prefix=${PREFIX}/ --includedir=${PREFIX}/include --disable-static --enable-shared
Carlos Lopez ec891a
	make -j$MAKE_THREADS
2336ea
	make install
2336ea
	cd ..
2336ea
	popd
2336ea
fi
2336ea
}
2336ea
2dade7
mkglib()
2dade7
{
2dade7
if ! pkg-config glib-2.0 --exact-version=${GLIB}  --print-errors; then
2dade7
	pushd /source
2dade7
	[ ! -d glib-${GLIB} ] && tar -xjf glib-${GLIB}.tar.bz2
2dade7
	cd glib-${GLIB}
2dade7
	#[[ $DOCLEAN == 1 ]] && make clean || true
2dade7
	./configure --disable-static --enable-shared
Carlos Lopez ec891a
	make -j$MAKE_THREADS
2dade7
	make install
2dade7
	cd ..
2dade7
	popd
2dade7
fi
2dade7
}
2dade7
a39cec
mkjack()
a39cec
{
a39cec
if ! pkg-config jack --exact-version=${JACK}  --print-errors; then
a39cec
	pushd /source
a39cec
	apt-get install -y libdb-dev uuid-dev
a39cec
	[ ! -d jack-audio-connection-kit-${JACK} ] && tar -xzf jack-audio-connection-kit-${JACK}.tar.gz
a39cec
	cd jack-audio-connection-kit-${JACK}
a39cec
	#[[ $DOCLEAN == 1 ]] && make clean || true
a39cec
	./configure --disable-static --enable-shared \
a39cec
		--libdir=/usr/local/lib
a39cec
	make -j$MAKE_THREADS
a39cec
	make install
a39cec
	cd ..
a39cec
	popd
a39cec
fi
a39cec
}
a39cec
a39cec
21567c
mkatk()
21567c
{
21567c
if ! pkg-config atk --exact-version=${ATK}  --print-errors; then
21567c
	pushd /source
21567c
	[ ! -d atk-${ATK} ] && tar -xjf atk-${ATK}.tar.bz2
21567c
	cd atk-${ATK}
21567c
	#[[ $DOCLEAN == 1 ]] && make clean || true
21567c
	./configure --disable-static --enable-shared
21567c
	make -j$MAKE_THREADS
21567c
	make install
21567c
	cd ..
21567c
	popd
21567c
fi
21567c
}
21567c
2336ea
mkglibmm()
2336ea
{
2dade7
if ! pkg-config glibmm-2.4 --exact-version=${GLIBMM}  --print-errors; then
2336ea
	pushd /source
2336ea
	[ ! -d glibmm-${GLIBMM} ] && tar -xjf glibmm-${GLIBMM}.tar.bz2
2336ea
	cd glibmm-${GLIBMM}
2336ea
	#[[ $DOCLEAN == 1 ]] && make clean || true
Carlos Lopez ec891a
	./configure --prefix=${PREFIX} --includedir=${PREFIX}/include --disable-static --enable-shared --disable-fulldocs
Carlos Lopez ec891a
	make -j$MAKE_THREADS
2336ea
	make install
2336ea
	cd ..
2336ea
	popd
2336ea
fi
2336ea
}
2336ea
2336ea
mklibxmlpp()
2336ea
{
2dade7
if ! pkg-config libxml\+\+-2.6 --exact-version=${LIBXMLPP}  --print-errors; then
2336ea
	pushd /source
2336ea
	[ ! -d libxml++-${LIBXMLPP} ] && tar -xjf libxml++-${LIBXMLPP}.tar.bz2
2336ea
	cd libxml++-${LIBXMLPP}
2336ea
	#[[ $DOCLEAN == 1 ]] && make clean || true
Carlos Lopez ec891a
	./configure --prefix=${PREFIX} --includedir=${PREFIX}/include --disable-static --enable-shared
Carlos Lopez ec891a
	make -j$MAKE_THREADS
2336ea
	make install
2336ea
	cd ..
2336ea
	popd
2336ea
fi
2336ea
}
2336ea
2336ea
mkimagemagick()
2336ea
{
befb44
PKG_NAME=ImageMagick
ac232e
PKG_VERSION="${IMAGEMAGICK}-10"
befb44
TAREXT=bz2
2dade7
if ! pkg-config ImageMagick --exact-version=${IMAGEMAGICK}  --print-errors; then
2336ea
	pushd /source
ac232e
	[ -e ${PKG_NAME}-${PKG_VERSION}.tar.${TAREXT} ] || wget http://www.imagemagick.org/download/legacy/${PKG_NAME}-${PKG_VERSION}.tar.${TAREXT}
befb44
	[ ! -d ${PKG_NAME}-${PKG_VERSION} ] && tar -xjf ${PKG_NAME}-${PKG_VERSION}.tar.bz2 # && cd ${PKG_NAME}-${PKG_VERSION} && patch -p1 < ../ImageMagick-6.4.0-multilib.patch && cd ..
befb44
	cd ${PKG_NAME}-${PKG_VERSION}
2336ea
	#[[ $DOCLEAN == 1 ]] && make clean || true
2336ea
	./configure --prefix=${PREFIX} --includedir=${PREFIX}/include --disable-static --enable-shared \
2336ea
		--with-modules \
2336ea
		--without-perl \
2336ea
		--without-x \
2336ea
		--with-threads \
4e1845
		--with-magick_plus_plus
2336ea
	sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool
2336ea
	sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool
Carlos Lopez ec891a
	make -j$MAKE_THREADS
2336ea
	make install
2336ea
	cd ..
2336ea
	popd
2336ea
fi
2336ea
}
2336ea
2336ea
mkglew()
2336ea
{
2336ea
[ ! -d glew-${GLEW} ] && tar -xzf glew-${GLEW}.tar.gz && cd glew && patch -p1 < glew-${GLEW}-makefile.patch && cd ..
2336ea
	pushd /source
2336ea
	cd glew
2336ea
	#[[ $DOCLEAN == 1 ]] && make clean || true
2336ea
	sed -i -e 's/\r//g' config/config.guess
e7fbb8
	make -j$MAKE_THREADS
2336ea
	make install GLEW_DEST=${PREFIX} libdir=/lib bindir=/bin  includedir=/include
2336ea
	cd ..
2336ea
	popd
2336ea
}
2336ea
21567c
mkfontconfig()
21567c
{
21567c
if ! pkg-config fontconfig --exact-version=${FONTCONFIG}  --print-errors; then
21567c
	pushd /source
21567c
	[ ! -d fontconfig-${FONTCONFIG} ] && tar -xzf fontconfig-${FONTCONFIG}.tar.gz
21567c
	cd fontconfig-${FONTCONFIG}
21567c
	#[[ $DOCLEAN == 1 ]] && make clean || true
21567c
	./configure --disable-static --enable-shared
21567c
	make -j$MAKE_THREADS
21567c
	make install
21567c
	cd ..
21567c
fi
21567c
}
21567c
2dade7
mkpixman()
2dade7
{
2dade7
if ! pkg-config pixman-1 --exact-version=${PIXMAN}  --print-errors; then
2dade7
	pushd /source
2dade7
	[ ! -d pixman-${PIXMAN} ] && tar -xzf pixman-${PIXMAN}.tar.gz
2dade7
	cd pixman-${PIXMAN}
2dade7
	#[[ $DOCLEAN == 1 ]] && make clean || true
2dade7
	./configure --disable-static --enable-shared
Carlos Lopez ec891a
	make -j$MAKE_THREADS
2dade7
	make install
2dade7
	cd ..
2dade7
fi
2dade7
}
2dade7
2dade7
mkcairo()
2dade7
{
2dade7
if ! pkg-config cairo --exact-version=${CAIRO}  --print-errors; then
2dade7
	pushd /source
2dade7
	[ ! -d cairo-${CAIRO} ] && tar -xzf cairo-${CAIRO}.tar.gz
2dade7
	cd cairo-${CAIRO}
2dade7
	#[[ $DOCLEAN == 1 ]] && make clean || true
ef7733
	./configure --prefix=${PREFIX} \
2dade7
		--disable-static 	\
2dade7
		--enable-warnings 	\
2dade7
		--enable-xlib 		\
2dade7
		--enable-freetype 	\
2dade7
	    --enable-gobject    \
58e598
		--disable-gtk-doc
Carlos Lopez ec891a
	make -j$MAKE_THREADS
2dade7
	make install
2dade7
	cd ..
2dade7
fi
2dade7
}
2dade7
2336ea
mkcairomm()
2336ea
{
2dade7
if ! pkg-config cairomm-1.0 --exact-version=${CAIROMM}  --print-errors; then
2336ea
	pushd /source
2336ea
	[ ! -d cairomm-${CAIROMM} ] && tar -xzf cairomm-${CAIROMM}.tar.gz
2336ea
	cd cairomm-${CAIROMM}
2336ea
	#[[ $DOCLEAN == 1 ]] && make clean || true
2336ea
	./configure --prefix=${PREFIX} --includedir=${PREFIX}/include --disable-static --enable-shared --enable-docs=no
Carlos Lopez ec891a
	make -j$MAKE_THREADS
2336ea
	make install
2336ea
	cd ..
2336ea
fi
2336ea
}
2336ea
2dade7
mkpango()
2dade7
{
2dade7
if ! pkg-config pango --exact-version=${PANGO}  --print-errors; then
2dade7
	pushd /source
2dade7
	[ ! -d pango-${PANGO} ] && tar -xjf pango-${PANGO}.tar.bz2
2dade7
	cd pango-${PANGO}
2dade7
	#[[ $DOCLEAN == 1 ]] && make clean || true
2dade7
	./configure  --disable-static --enable-shared
2dade7
	make -j$MAKE_THREADS
2dade7
	make install
2dade7
	cd ..
2dade7
	popd
2dade7
fi
2dade7
}
2dade7
2dade7
mkpangomm()
2dade7
{
2dade7
if ! pkg-config pangomm-1.4 --exact-version=${PANGOMM}  --print-errors; then
2dade7
	pushd /source
2dade7
	[ ! -d pangomm-${PANGOMM} ] && tar -xjf pangomm-${PANGOMM}.tar.bz2
2dade7
	cd pangomm-${PANGOMM}
2dade7
	#[[ $DOCLEAN == 1 ]] && make clean || true
2dade7
	./configure --prefix=${PREFIX} --includedir=${PREFIX}/include --disable-static --enable-shared --disable-docs
2dade7
	make -j$MAKE_THREADS
2dade7
	make install
2dade7
	cd ..
2dade7
	popd
2dade7
fi
2dade7
}
2dade7
2dade7
mkgtk()
2dade7
{
e4ba4e
if ! pkg-config gtk\+-3.0 --exact-version=${GTK}  --print-errors; then
2dade7
	pushd /source
2dade7
	[ ! -d gtk\+-${GTK} ] && tar -xjf gtk\+-${GTK}.tar.bz2
2dade7
	cd gtk\+-${GTK}
2dade7
	#[[ $DOCLEAN == 1 ]] && make clean || true
2dade7
	./configure --disable-static --enable-shared --disable-examples --disable-demos --disable-docs
2dade7
	make -j$MAKE_THREADS
2dade7
	make install
2dade7
	cd ..
2dade7
	popd
2dade7
fi
2dade7
}
2dade7
2336ea
mkgtkmm()
2336ea
{
e4ba4e
if ! pkg-config gtkmm-3.0 --exact-version=${GTKMM}  --print-errors; then
2336ea
	pushd /source
2336ea
	[ ! -d gtkmm-${GTKMM} ] && tar -xjf gtkmm-${GTKMM}.tar.bz2
2336ea
	cd gtkmm-${GTKMM}
2336ea
	#[[ $DOCLEAN == 1 ]] && make clean || true
2336ea
	./configure --prefix=${PREFIX} --includedir=${PREFIX}/include --disable-static --enable-shared --disable-examples --disable-demos --disable-docs
e7fbb8
	make -j$MAKE_THREADS
2336ea
	make install
2336ea
	cd ..
2336ea
	popd
2336ea
fi
2336ea
}
2336ea
2336ea
mkfreeglut()
2336ea
{
2336ea
	pushd /source
2336ea
	[ ! -d freeglut-${FREEGLUT} ] && tar -xzf freeglut-${FREEGLUT}.tar.gz
2336ea
	cd freeglut-${FREEGLUT}
2336ea
	#[[ $DOCLEAN == 1 ]] && make clean || true
Carlos Lopez ec891a
	./configure --prefix=${PREFIX} --includedir=${PREFIX}/include --disable-static  --disable-warnings --enable-shared
e7fbb8
	make -j$MAKE_THREADS
2336ea
	make install
2336ea
	cd ..
2336ea
	popd
2336ea
}
2336ea
2336ea
mkftgl()
2336ea
{
2336ea
	pushd /source
2336ea
	if [ ! -d ftgl-${FTGL} ]; then
2336ea
		tar -xjf ftgl-${FTGL}.tar.bz2
2336ea
		cd FTGL
2336ea
		patch -p1 -b < ftgl-2.1.2-destdir.patch
2336ea
		patch -p1 -b < ftgl-2.1.2-Glyph-g++_41.patch
2336ea
		patch -p1 -b < ftgl-2.1.2-pc_req.patch
2336ea
		patch -p1 -b < ftgl-2.1.2-rpath_FTGLDemo.patch
2336ea
		patch -p1 -b < ftgl-2.1.2-ttf_font.patch
2336ea
		sed -i.fixed_version -e 's|2.0.5|%{version}|g' unix/configure.ac unix/configure
2336ea
		cd ..
2336ea
	fi
2336ea
	cd FTGL
2336ea
	cd unix
2336ea
	#[[ $DOCLEAN == 1 ]] && make clean || true
Carlos Lopez ec891a
	./configure --prefix=${PREFIX} --includedir=${PREFIX}/include --disable-static --enable-shared --with-gl-inc=${PREFIX}/include  --with-gl-lib=${PREFIX}/lib  --with-glut-inc=${PREFIX}/include  --with-glut-lib=${PREFIX}/lib  --with-x
e7fbb8
	make all -j$MAKE_THREADS
2336ea
	make install
2336ea
	cd ..
2336ea
	popd
2336ea
}
2336ea
2336ea
mkgtkglext()
2336ea
{
2336ea
	pushd /source
2336ea
	[ ! -d gtkglext-${GTKGLEXT} ] && tar -xjf gtkglext-${GTKGLEXT}.tar.bz2
2336ea
	cd gtkglext-${GTKGLEXT}
2336ea
	#[[ $DOCLEAN == 1 ]] && make clean || true
Carlos Lopez ec891a
	./configure --prefix=${PREFIX} --includedir=${PREFIX}/include  --disable-gtk-doc --disable-static  --enable-shared
Carlos Lopez ec891a
	make -j$MAKE_THREADS
2336ea
	make install
2336ea
	cd ..
2336ea
	popd
2336ea
}
2336ea
2336ea
mkgtkglextmm()
2336ea
{
2336ea
	pushd /source
2336ea
	[ ! -d gtkglextmm-${GTKGLEXTMM} ] && tar -xjf gtkglextmm-${GTKGLEXTMM}.tar.bz2 && cd gtkglextmm-${GTKGLEXTMM} && patch -p1 < gtkglextmm-1.2.0-aclocal.diff && cd ..
2336ea
	cd gtkglextmm-${GTKGLEXTMM}
2336ea
	#[[ $DOCLEAN == 1 ]] && make clean || true
Carlos Lopez ec891a
	./configure --prefix=${PREFIX} --includedir=${PREFIX}/include  --disable-dependency-tracking --disable-static  --enable-shared
Carlos Lopez ec891a
	make -j$MAKE_THREADS
2336ea
	make install
2336ea
	popd
2336ea
cd ..
2336ea
}
2336ea
2336ea
mkgit()
2336ea
{
2336ea
	pushd /source
2336ea
	[ ! -d git-${GITVERSION} ] && tar -xjf git-${GITVERSION}.tar.bz2
2336ea
	cd git-${GITVERSION}
2336ea
	./configure
e7fbb8
	make -j$MAKE_THREADS
2336ea
	make install
2336ea
	cd ..
2336ea
	popd
2336ea
}
2336ea
a800ff
mkboost()
a800ff
{
a800ff
if ! cat /usr/local/include/boost/version.hpp |egrep "BOOST_LIB_VERSION \"${BOOST%_*}\""; then
a800ff
	pushd /source
a800ff
	[ ! -d boost-${BOOST} ] && tar -xjf boost_${BOOST}.tar.bz2
a800ff
	cd boost_${BOOST}
a800ff
	./bootstrap.sh
a800ff
	./b2 || true
a800ff
	./b2 install || true
a800ff
	cd ..
a800ff
	popd
a800ff
fi
a800ff
cp /usr/local/lib/libboost_program_options.so.1.53.0 $PREFIX/lib/
a800ff
}
a800ff
2336ea
mkETL()
2336ea
{
7544ab
travis_fold_start ETL "Building ETL"
86b25b
e9a26c
if [ -f ${SYNFIG_REPO_DIR}/ETL/trunk/configure.ac ]; then
2336ea
	pushd ${SYNFIG_REPO_DIR}/ETL/trunk
2336ea
else
2336ea
	pushd ${SYNFIG_REPO_DIR}/ETL
2336ea
fi
2336ea
2336ea
2336ea
if ( [[ $MODE == 'package' ]] || [[ $MODE == 'full' ]] ); then
2336ea
	echo "Cleaning source tree..."
2336ea
	make clean || true
2336ea
fi
2336ea
2336ea
2336ea
if [[ $MODE != 'quick' ]]; then
2336ea
	echo "Going to configure..."
2336ea
	rm -f aclocal.m4
2336ea
	autoreconf --install --force
24a789
	./configure --prefix=${PREFIX} --includedir=${PREFIX}/include $DEBUG CFLAGS=$CFLAGS CXXFLAGS=$CXXFLAGS
2336ea
fi
24a789
make $MAKE_OPTIONS
5e2adb
sed -i "s|^Cflags: -I\\\${includedir}|Cflags: -I$SYNFIG_REPO_DIR\/ETL -I\\\${includedir}|" ETL.pc
2336ea
make install
2336ea
2336ea
popd
7544ab
travis_fold_end ETL
2336ea
}
2336ea
2336ea
mksynfig()
2336ea
{
7544ab
travis_fold_start SynfigCore "Building Synfig Core"
e9a26c
if [ -d ${SYNFIG_REPO_DIR}/synfig-core/trunk/configure.ac ]; then
2336ea
	pushd ${SYNFIG_REPO_DIR}/synfig-core/trunk
2336ea
else
2336ea
	pushd ${SYNFIG_REPO_DIR}/synfig-core
2336ea
fi
2336ea
Androbin 0d8a01
if [[ $MODE == 'package' ]] || [[ $MODE == 'full' ]]; then
Androbin 0d8a01
    make clean || true
Androbin 0d8a01
fi
2336ea
2336ea
if [[ $MODE != 'quick' ]]; then
c70f84
    /bin/sh ./bootstrap.sh
5da72e
	if [ -e /etc/debian_version ] && [ -z $BOOST_CONFIGURE_OPTIONS ]; then
1ef084
		# Debian/Ubuntu multiarch
7f3d3a
		MULTIARCH_LIBDIR="/usr/lib/`uname -m`-linux-gnu/"
24c405
		if [ -e "${MULTIARCH_LIBDIR}/libboost_program_options.so" ]; then
1ef084
			export BOOST_CONFIGURE_OPTIONS="--with-boost-libdir=$MULTIARCH_LIBDIR"
1ef084
		fi
1ef084
	fi
1ef084
	export CONFIG_SHELL=/bin/bash
1ef084
	/bin/bash ./configure --prefix=${PREFIX} \
1ef084
		--includedir=${PREFIX}/include \
1ef084
		--disable-static --enable-shared \
1ef084
		--with-magickpp \
1ef084
		--without-libavcodec \
1ef084
		--without-included-ltdl \
1ef084
		$BOOST_CONFIGURE_OPTIONS \
24a789
		$DEBUG \
24a789
		CFLAGS=$CFLAGS \
24a789
		CXXFLAGS=$CXXFLAGS
2336ea
fi
2336ea
2336ea
#It looks like mod_libavcodec causes segfault on synfig-core when rendering to png.
2336ea
#Tested on: ffmpeg-0.4.9-0.52.20080908.fc10.x86_64.
2336ea
2336ea
#if [[ $GIT == 1 ]]; then
2336ea
#	export CFLAGS=-I/opt/synfig/include/GL/
2336ea
#	export LDFLAGS=-L/opt/synfig/lib/
2336ea
#else
2336ea
#	export CFLAGS=''
2336ea
#	export LDFLAGS=''
2336ea
#fi
24a789
make $MAKE_OPTIONS
bca953
sed -i "s|^includedir=.*$|includedir=$SYNFIG_REPO_DIR\/synfig-core\/src|" synfig.pc
2336ea
make install
2336ea
2336ea
popd
7544ab
travis_fold_end SynfigCore
2336ea
}
2336ea
2336ea
mksynfigstudio()
2336ea
{
7544ab
travis_fold_start SynfigStudio "Building Synfig Studio"
e9a26c
if [ -d ${SYNFIG_REPO_DIR}/synfig-studio/trunk/configure.ac ]; then
2336ea
	pushd ${SYNFIG_REPO_DIR}/synfig-studio/trunk
2336ea
else
2336ea
	pushd ${SYNFIG_REPO_DIR}/synfig-studio
2336ea
fi
2336ea
Androbin 0d8a01
if [[ $MODE == 'package' ]] || [[ $MODE == 'full' ]]; then
Androbin 0d8a01
    make clean || true
Androbin 0d8a01
fi
2336ea
e3772c
if [[ $MODE == 'package' ]]; then
e3772c
	CONFIGURE_PACKAGE_OPTIONS='--disable-update-mimedb'
e3772c
fi
e3772c
2336ea
if [[ $MODE != 'quick' ]]; then
0bdb5b
	/bin/sh ./bootstrap.sh
24a789
	/bin/sh ./configure --prefix=${PREFIX} --includedir=${PREFIX}/include --disable-static --enable-shared --enable-jack --enable-warnings=max $DEBUG $CONFIGURE_PACKAGE_OPTIONS CFLAGS=$CFLAGS CXXFLAGS=$CXXFLAGS
2336ea
fi
2336ea
24a789
make $MAKE_OPTIONS
2336ea
make install
2336ea
2336ea
for n in AUTHORS COPYING NEWS README
2336ea
do
2336ea
  	cp -f $n ${PREFIX}
2336ea
done
2336ea
cd6eca
#if [ -e synfigstudio-cph-monitor ]; then
cd6eca
#	cp -f synfigstudio-cph-monitor ${PREFIX}/bin/
cd6eca
#	chmod a+x ${PREFIX}/bin/synfigstudio-cph-monitor
cd6eca
#fi
2336ea
2336ea
popd
7544ab
travis_fold_end SynfigStudio
2336ea
}
2336ea
2336ea
mkpack()
2336ea
{
2336ea
	[ -d /packages ] || mkdir /packages
Carlos Lopez ec891a
d15c94
	# bundle libpng
14758c
	rm -f ${PREFIX}/lib/libpng* || true
14758c
	cp -av /usr/lib/libpng*.so* ${PREFIX}/lib
1b1f25
	# bundle libjasper
14758c
	rm -f ${PREFIX}/lib/libjasper* || true
14758c
	cp -av /usr/lib/libjasper*.so* ${PREFIX}/lib
befb44
	# bundle libltdl
befb44
	rm -f ${PREFIX}/lib/libltdl* || true
befb44
	cp -av /usr/lib/libltdl*.so* ${PREFIX}/lib
a39cec
a39cec
	# A place for optional libs
a39cec
	[ -e ${PREFIX}/lib.extra ] || mkdir -p ${PREFIX}/lib.extra
a39cec
	# bundle optional libjack
a39cec
	rm -f ${PREFIX}/lib.extra/libjack* || true
a39cec
	cp -av /usr/local/lib/libjack.so* ${PREFIX}/lib.extra
a39cec
	rm -f ${PREFIX}/lib.extra/libdb-4* || true
a39cec
	cp -av /usr/lib/libdb-4*.so ${PREFIX}/lib.extra
db4a2e
	
db4a2e
	cat > $PREFIX/synfig <
db4a2e
#!/bin/sh
db4a2e
db4a2e
PREFIX="/opt/synfig"
db4a2e
db4a2e
export LD_LIBRARY_PATH=\${PREFIX}/lib:\$LD_LIBRARY_PATH
db4a2e
export SYNFIG_ROOT=\${PREFIX}/
db4a2e
export SYNFIG_MODULE_LIST=\${PREFIX}/etc/synfig_modules.cfg
d15c94
db4a2e
\$PREFIX/bin/synfig "\$@"
db4a2e
EOF
db4a2e
	chmod a+x $PREFIX/synfig
db4a2e
	
db4a2e
	cat > $PREFIX/synfigstudio <
db4a2e
#!/bin/sh
db4a2e
db4a2e
PREFIX="/opt/synfig"
db4a2e
a39cec
# Check if this system have JACK installed
a39cec
if ( ! ldconfig -p | grep libjack.so >/dev/null ) || ( ! which jackd >/dev/null ) ; then
a39cec
	# No JACK, so disable this functionality.
a39cec
	# (The bundled libjack won't work correctly anyway).
a39cec
	export SYNFIG_DISABLE_JACK=1
a39cec
	export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:\${PREFIX}/lib.extra
a39cec
fi
a39cec
db4a2e
export LD_LIBRARY_PATH=\${PREFIX}/lib:\$LD_LIBRARY_PATH
db4a2e
export SYNFIG_ROOT=\${PREFIX}/
db4a2e
export SYNFIG_MODULE_LIST=\${PREFIX}/etc/synfig_modules.cfg
db4a2e
db4a2e
\$PREFIX/bin/synfigstudio "\$@"
db4a2e
EOF
db4a2e
	chmod a+x $PREFIX/synfigstudio
db4a2e
	
2336ea
	#== tar.bz2 ==
2336ea
	TBZPREFIX=/tmp/synfigstudio-${VERSION}-${REVISION}.$BREED.$RELEASE.${ARCH}
2336ea
	rm -rf $TBZPREFIX
2336ea
	mkdir -p $TBZPREFIX
2336ea
	cp -r  ${PREFIX}/* $TBZPREFIX
Carlos Lopez ec891a
706582
	if [[ $DEBUG != '' ]]; then
8e0bca
		GDB="which gdb && xterm -e  gdb -ex run -ex quit \$PREFIX/bin/synfig \"\$@\" || "
2336ea
	else
2336ea
		GDB=''
2336ea
	fi
Carlos Lopez ec891a
2336ea
	#binaries
2336ea
	cat > $TBZPREFIX/synfig <
2336ea
#!/bin/sh
2336ea
2336ea
PREFIX=\`dirname \$0\`
2336ea
PREFIX=\`cd \$PREFIX; pwd\`
2336ea
export LD_LIBRARY_PATH=\${PREFIX}/lib:\$LD_LIBRARY_PATH
2336ea
export SYNFIG_ROOT=\${PREFIX}/
2336ea
export SYNFIG_MODULE_LIST=\${PREFIX}/etc/synfig_modules.cfg
2336ea
8e0bca
$GDB\$PREFIX/bin/synfig "\$@"
2336ea
EOF
706582
	if [[ $DEBUG != '' ]]; then
2336ea
		GDB="which gdb && xterm -e  gdb -ex run -ex quit \$PREFIX/bin/synfigstudio \$@ || "
2336ea
	else
2336ea
		GDB=''
2336ea
	fi
2336ea
	cat > $TBZPREFIX/synfigstudio <
2336ea
#!/bin/sh
2336ea
2336ea
PREFIX=\`dirname \$0\`
2336ea
PREFIX=\`cd \$PREFIX; pwd\`
a39cec
a39cec
# Check if this system have JACK installed
a39cec
if ( ! ldconfig -p | grep libjack.so >/dev/null ) || ( ! which jackd >/dev/null ) ; then
a39cec
	# No JACK, so disable this functionality.
a39cec
	# (The bundled libjack won't work correctly anyway).
a39cec
	export SYNFIG_DISABLE_JACK=1
a39cec
	export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:\${PREFIX}/lib.extra
a39cec
fi
a39cec
2336ea
export LD_LIBRARY_PATH=\${PREFIX}/lib:\$LD_LIBRARY_PATH
2336ea
export SYNFIG_ROOT=\${PREFIX}/
2336ea
export SYNFIG_MODULE_LIST=\${PREFIX}/etc/synfig_modules.cfg
2336ea
db4a2e
$GDB\$PREFIX/bin/synfigstudio "\$@"
2336ea
EOF
2336ea
	chmod a+x $TBZPREFIX/synfig
2336ea
	chmod a+x $TBZPREFIX/synfigstudio
Carlos Lopez ec891a
2336ea
	#cleaning devel stuff
2336ea
	mkdir $TBZPREFIX/bin.tmp
2336ea
	mv $TBZPREFIX/bin/synfig $TBZPREFIX/bin.tmp/synfig
2336ea
	mv $TBZPREFIX/bin/synfigstudio $TBZPREFIX/bin.tmp/synfigstudio
2336ea
	rm -rf $TBZPREFIX/bin
2336ea
	mv $TBZPREFIX/bin.tmp $TBZPREFIX/bin
Carlos Lopez ec891a
2336ea
	rm -f $TBZPREFIX/lib/*.la
2336ea
	rm -f $TBZPREFIX/lib/*.a
ef7733
	rm -f $TBZPREFIX/lib/cairo/*.la
2336ea
	rm -rf $TBZPREFIX/include
e4ba4e
	rm -rf $TBZPREFIX/lib/gdkmm-3.0
2336ea
	rm -rf $TBZPREFIX/lib/libxml++-2.6
2336ea
	rm -rf $TBZPREFIX/lib/glibmm-2.4
2dade7
	rm -rf $TBZPREFIX/lib/pangomm-1.4
e4ba4e
	rm -rf $TBZPREFIX/lib/gtkmm-3.0
2336ea
	rm -rf $TBZPREFIX/lib/pkgconfig
2336ea
	rm -rf $TBZPREFIX/lib/sigc++-2.0
2336ea
	rm -rf $TBZPREFIX/share/doc
2dade7
	rm -rf $TBZPREFIX/share/devhelp
ef7733
	rm -rf $TBZPREFIX/share/gtk-doc
2336ea
	rm -rf $TBZPREFIX/share/aclocal
2336ea
	rm -rf $TBZPREFIX/share/ImageMagick-6.4.0
2336ea
	rm -rf $TBZPREFIX/share/man
Carlos Lopez ec891a
2336ea
	rm -f /packages/synfigstudio-${VERSION}-${REVISION}.$BREED.$RELEASE.${ARCH}.tar.bz2
2336ea
	pushd $TBZPREFIX/../
2336ea
	tar cjf /packages/synfigstudio-${VERSION}-${REVISION}.$BREED.$RELEASE.${ARCH}.tar.bz2 synfigstudio-${VERSION}-${REVISION}.$BREED.$RELEASE.${ARCH}
2336ea
	popd
2336ea
	rm -rf $TBZPREFIX
Carlos Lopez ec891a
2336ea
	#== rpm ==
2336ea
    cat > synfigstudio.spec << EOF
2336ea
%define __spec_install_post /bin/true
2336ea
2336ea
Name:           synfigstudio
2336ea
Version:        ${VERSION}
dbf8b7
Release:        ${REVISION}.${BREED}.${RELEASE}
2336ea
Summary:        Film-Quality 2D Vector Animation package
2336ea
Group:          Applications/Graphics
2336ea
License:        GPL
2336ea
URL:            http://www.synfig.org/
2336ea
BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
2336ea
Obsoletes:       synfig ETL
2336ea
AutoReqProv: no
2336ea
2336ea
2336ea
%description
2336ea
Synfig Animation Studio is a powerful, industrial-strength vector-based
2336ea
2D animation software, designed from the ground-up for producing
2336ea
feature-film quality animation with fewer people and resources.
Carlos Lopez ec891a
It eliminates the need for tweening, preventing the need to hand-draw
Carlos Lopez ec891a
each frame. Synfig features spatial and temporal resolution independence
Carlos Lopez ec891a
(sharp and smooth at any resolution or framerate), high dynamic range
Carlos Lopez ec891a
images, and a flexible plugin system.
2336ea
2336ea
2336ea
%prep
2336ea
2336ea
2336ea
%build
2336ea
2336ea
%install
2336ea
rm -rf \$RPM_BUILD_ROOT
2336ea
mkdir -p \$RPM_BUILD_ROOT/${PREFIX}
2336ea
cp -r  ${PREFIX}/* \$RPM_BUILD_ROOT/${PREFIX}
2336ea
mkdir -p \$RPM_BUILD_ROOT/usr/share
2336ea
mv \$RPM_BUILD_ROOT/${PREFIX}/share/applications \$RPM_BUILD_ROOT/usr/share
2336ea
mv \$RPM_BUILD_ROOT/${PREFIX}/share/icons \$RPM_BUILD_ROOT/usr/share
a7dd5e
mv \$RPM_BUILD_ROOT/${PREFIX}/share/mime \$RPM_BUILD_ROOT/usr/share
2336ea
mkdir -p \$RPM_BUILD_ROOT/usr/share/mime-info
2336ea
ln -sf ${PREFIX}/share/mime-info/synfigstudio.keys \$RPM_BUILD_ROOT/usr/share/mime-info/synfigstudio.keys
2336ea
ln -sf ${PREFIX}/share/mime-info/synfigstudio.mime \$RPM_BUILD_ROOT/usr/share/mime-info/synfigstudio.mime
2336ea
mkdir -p \$RPM_BUILD_ROOT/usr/share/pixmaps
2336ea
ln -sf ${PREFIX}/share/pixmaps/sif_icon.png \$RPM_BUILD_ROOT/usr/share/pixmaps/sif_icon.png
2336ea
ln -sf ${PREFIX}/share/pixmaps/synfig_icon.png \$RPM_BUILD_ROOT/usr/share/pixmaps/synfig_icon.png
2336ea
mkdir -p \$RPM_BUILD_ROOT/usr/bin
db4a2e
cp \$RPM_BUILD_ROOT/${PREFIX}/synfig \$RPM_BUILD_ROOT/usr/bin/
db4a2e
cp \$RPM_BUILD_ROOT/${PREFIX}/synfigstudio \$RPM_BUILD_ROOT/usr/bin/
2336ea
cd6eca
#if [ -e \$RPM_BUILD_ROOT/${PREFIX}/bin/synfigstudio-cph-monitor ]; then
cd6eca
#mv \$RPM_BUILD_ROOT/${PREFIX}/bin/synfigstudio-cph-monitor \$RPM_BUILD_ROOT/usr/bin/
cd6eca
#cat > \$RPM_BUILD_ROOT/usr/share/applications/synfigstudio-cph-monitor.desktop << EOD
cd6eca
#[Desktop Entry]
cd6eca
#Encoding=UTF-8
cd6eca
#Name=Synfig Studio CPH monitor
cd6eca
#Comment=This application collecting statistics about synfig crashes
cd6eca
#Exec=synfigstudio-cph-monitor
cd6eca
#Icon=terminal.png
cd6eca
#Terminal=true
cd6eca
#Type=Application
cd6eca
#Categories=Graphics;Application;
cd6eca
#X-Desktop-File-Install-Version=0.15
cd6eca
#EOD
cd6eca
#fi
2336ea
2336ea
#cleaning devel stuff
2336ea
rm -f \$RPM_BUILD_ROOT/${PREFIX}/lib/*.la
2336ea
rm -f \$RPM_BUILD_ROOT/${PREFIX}/lib/*.a
ef7733
rm -f \$RPM_BUILD_ROOT/${PREFIX}/lib/cairo/*.la
db4a2e
#rm -rf \$RPM_BUILD_ROOT/${PREFIX}/bin
2336ea
rm -rf \$RPM_BUILD_ROOT/${PREFIX}/include
e4ba4e
rm -rf \$RPM_BUILD_ROOT/${PREFIX}/lib/gdkmm-3.0
2336ea
rm -rf \$RPM_BUILD_ROOT/${PREFIX}/lib/libxml++-2.6
2336ea
rm -rf \$RPM_BUILD_ROOT/${PREFIX}/lib/glibmm-2.4
e4ba4e
rm -rf \$RPM_BUILD_ROOT/${PREFIX}/lib/gtkmm-3.0
2dade7
rm -rf \$RPM_BUILD_ROOT/${PREFIX}/lib/pangomm-1.4
2336ea
rm -rf \$RPM_BUILD_ROOT/${PREFIX}/lib/pkgconfig
2336ea
rm -rf \$RPM_BUILD_ROOT/${PREFIX}/lib/sigc++-2.0
2336ea
rm -rf \$RPM_BUILD_ROOT/${PREFIX}/share/doc
2dade7
rm -rf \$RPM_BUILD_ROOT/${PREFIX}/share/devhelp
ef7733
rm -rf \$RPM_BUILD_ROOT/${PREFIX}/share/gtk-doc
2336ea
rm -rf \$RPM_BUILD_ROOT/${PREFIX}/share/aclocal
2336ea
rm -rf \$RPM_BUILD_ROOT/${PREFIX}/share/ImageMagick-6.4.0
2336ea
rm -rf \$RPM_BUILD_ROOT/${PREFIX}/share/man
2336ea
2336ea
2336ea
%clean
2336ea
rm -rf \$RPM_BUILD_ROOT
2336ea
2336ea
%post
a7dd5e
if [ -x /usr/bin/update-mime-database ]; then
a7dd5e
  update-mime-database /usr/share/mime
a7dd5e
fi
f07654
if [ -x /usr/bin/update-desktop-database ]; then
f07654
  update-desktop-database
f07654
fi
2336ea
2336ea
%postun
a7dd5e
if [ -x /usr/bin/update-mime-database ]; then
a7dd5e
  update-mime-database /usr/share/mime
a7dd5e
fi
f07654
if [ -x /usr/bin/update-desktop-database ]; then
f07654
  update-desktop-database
f07654
fi
2336ea
2336ea
%files
2336ea
%defattr(-,root,root,-)
2336ea
$PREFIX
2336ea
/usr/share/*
2336ea
/usr/bin/*
2336ea
2336ea
%changelog
2336ea
* Sat Mar 21 2009 Konstantin Dmitriev <ksee.zelgadis@gmail.com> - 0.61.09-2354.morevnapackage.1</ksee.zelgadis@gmail.com>
2336ea
- Update to SVN2354
2336ea
- Include ImageMagick-c++
2336ea
2336ea
* Wed Jan 14 2009 Konstantin Dmitriev <ksee.zelgadis@gmail.com> - 0.61.09-2316.morevnapackage.1</ksee.zelgadis@gmail.com>
2336ea
- First release
2336ea
2336ea
EOF
2336ea
    rpmbuild -bb synfigstudio.spec
Carlos Lopez ec891a
dbf8b7
    #cp /usr/src/redhat/RPMS/$ARCH/synfigstudio-${VERSION}-${REVISION}.${BREED}.$RELEASE.${ARCH}.rpm ../
dbf8b7
    cp /usr/src/rpm/RPMS/$ARCH/synfigstudio-${VERSION}-${REVISION}.${BREED}.$RELEASE.${ARCH}.rpm /packages/
2336ea
    pushd /packages/
e3772c
    alien -k --scripts synfigstudio-${VERSION}-${REVISION}.${BREED}.$RELEASE.${ARCH}.rpm
2336ea
    rm -rf synfigstudio-${VERSION}
2336ea
    popd
2336ea
}
2336ea
04aa5c
initialize()
04aa5c
{
2336ea
	if [[ $DEBUG == 1 ]]; then
706582
		DEBUG='--enable-debug --enable-optimization=0'
2336ea
	else
2336ea
		DEBUG=''
2336ea
	fi
Carlos Lopez ec891a
12fadd
	if [[ $MODE == 'package' ]]; then
12fadd
		PREFIX="/opt/synfig"
12fadd
	fi
Carlos Lopez ec891a
2dade7
	if [[ $MODE == 'package' ]] && [[ `cat /etc/chroot.id` == "Synfig Packages Buildroot v${BUILDROOT_VERSION}" ]]; then
2336ea
		SYNFIG_REPO_DIR="/source/synfig.git"
Carlos Lopez ec891a
2336ea
		which git || mkgit
Carlos Lopez ec891a
2336ea
		pushd $SYNFIG_REPO_DIR
2336ea
		git fetch
2336ea
		git reset --hard HEAD
2336ea
		#we can't switch directly to specified commit wit old git, so let's create temporary branch:
2336ea
		#git checkout master || ( git branch -f master && git checkout master )
2336ea
		#git branch -f __build $SELECTEDREVISION
2336ea
		#git checkout __build
2336ea
		git checkout $SELECTEDREVISION
2336ea
		VERSION=`cat synfig-core/configure.ac |egrep "AC_INIT\(\[Synfig Core\],"| sed "s|.*Core\],\[||" | sed "s|\],\[.*||"`
2336ea
		if [ -z $BREED ]; then
2336ea
			BREED="`git branch -a --no-color --contains HEAD | sed -e s/\*\ // | sed -e s/\(no\ branch\)// | tr '\n' ' ' | tr -s ' ' | sed s/^' '//`"
2336ea
			if ( echo $BREED | egrep origin/master > /dev/null ); then
2336ea
				#give a priority to master branch
2336ea
				BREED='master'
2336ea
			else
2336ea
				BREED=`echo $BREED | cut -d ' ' -f 1`
2336ea
				BREED=${BREED##*/}
2336ea
			fi
2336ea
			BREED=${BREED%_master}
2336ea
		fi
e230f2
		if [[ ${VERSION##*-RC} != ${VERSION} ]]; then
3f1c50
			#if [[ $BREED == 'master' ]]; then
e230f2
				BREED=rc${VERSION##*-RC}
3f1c50
			#else
3f1c50
			#	BREED=rc${VERSION##*-RC}.$BREED
3f1c50
			#fi
e230f2
			VERSION=${VERSION%%-*}
e230f2
		fi
dbf8b7
		[[ $DEBUG == 1 ]] && BREED=${BREED}.dbg
dbf8b7
		BREED=`echo $BREED | tr _ . | tr - .`	# No "-" or "_" characters, becuse RPM and DEB complain
c34103
		REVISION=`git show --pretty=format:%ci HEAD |  head -c 10 | tr -d '-'`
2336ea
		echo
2336ea
		echo
2336ea
		echo "BUILDING synfigstudio-$VERSION-$REVISION.$BREED.$RELEASE"
2336ea
		echo
2336ea
		echo
2336ea
		sleep 5
2336ea
		popd
Carlos Lopez ec891a
2336ea
		#Trick to detect arch under chroot
2336ea
		#ARCH=`rpm -q --queryformat='%{arch}\n' e2fsprogs`
2336ea
		MACHINE_TYPE=`uname -m`
2336ea
		case ${MACHINE_TYPE} in
2336ea
			i586)
2336ea
			ARCH=i386;;
2336ea
			i686)
2336ea
			ARCH=i386;;
2336ea
			*)
2336ea
			ARCH=${MACHINE_TYPE};;
2336ea
		esac
2336ea
	else
2336ea
		#detecting repo
a3680b
		SCRIPTPATH=`dirname "$0"`
a3680b
		pushd "$SCRIPTPATH"
2336ea
		if git rev-parse --git-dir >/dev/null; then
2336ea
			SYNFIG_REPO_DIR=$(dirname `git rev-parse --git-dir`)
fe0c95
			pushd "$SYNFIG_REPO_DIR" > /dev/null
fe0c95
			SYNFIG_REPO_DIR=`pwd`
fe0c95
			popd  > /dev/null
2336ea
			WORKDIR_IS_REPO=1
2336ea
		fi
a3680b
		popd > /dev/null
2336ea
	fi
Carlos Lopez ec891a
2dade7
	#export PREFIX=/opt/synfig
49a772
	export PKG_CONFIG_PATH=${PREFIX}/lib/pkgconfig:${PREFIX}/lib64/pkgconfig:/usr/local/lib/pkgconfig:/usr/lib/`uname -i`-linux-gnu/pkgconfig/:$PKG_CONFIG_PATH
2336ea
	export PATH=${PREFIX}/bin:$PATH
a5aa3a
	export LD_LIBRARY_PATH=${PREFIX}/lib:${PREFIX}/lib64:/usr/local/lib:$LD_LIBRARY_PATH
2336ea
	export LDFLAGS="-Wl,-rpath -Wl,\\\$\$ORIGIN/lib"
2336ea
}
2336ea
2336ea
mk()
2336ea
{
24a789
	#get_dependencies
04aa5c
	initialize 
04aa5c
	
Androbin 0d8a01
	if [[ $WORKDIR_IS_REPO == 0 ]]; then
2336ea
		SYNFIG_REPO_DIR=`pwd`/synfig.git/
04d925
		git clone git://github.com/synfig/synfig.git ${SYNFIG_REPO_DIR}
2336ea
	fi
Carlos Lopez ec891a
2336ea
	mkETL
2336ea
	mksynfig
2336ea
	mksynfigstudio
2336ea
}
2336ea
2336ea
mkpackage()
2336ea
{
2336ea
	#check if we already in chroot
2dade7
	if [[ `cat /etc/chroot.id` == "Synfig Packages Buildroot v${BUILDROOT_VERSION}" ]]; then
2336ea
		echo "We are in chroot now."
Carlos Lopez ec891a
e7fbb8
		echo "[user]"  > /root/.gitconfig
e7fbb8
		echo "email = packages@synfig.org"  >> /root/.gitconfig
e7fbb8
		echo "name = Synfig Packager" >> /root/.gitconfig
e74816
		
e74816
		# we need newer intltool
e74816
		dpkg -i /source/intltool_0.41.1-1_all.deb
Carlos Lopez ec891a
2dade7
		#system libs
2dade7
		mkglib
21567c
		mkfontconfig
21567c
		mkatk
2dade7
		mkpixman
2dade7
		mkcairo
2dade7
		mkpango
2dade7
		mkgtk
a39cec
		mkjack
Carlos Lopez ec891a
Carlos Lopez ec891a
2336ea
		#synfig-core deps
2336ea
		mklibsigcpp
2336ea
		mkglibmm
2336ea
		mklibxmlpp
2336ea
		if [[ $OPENGL == 1 ]]; then
2336ea
			mkglew
2336ea
		fi
2336ea
		mkimagemagick
a800ff
		mkboost
Carlos Lopez ec891a
2336ea
		#synfig-studio deps
2336ea
		mkcairomm
2dade7
		mkpangomm
2336ea
		mkgtkmm
2336ea
		if [[ $OPENGL == 1 ]]; then
2336ea
			mkfreeglut
2336ea
			mkftgl
2336ea
			mkgtkglext
2336ea
			mkgtkglextmm
2336ea
		fi
Carlos Lopez ec891a
2336ea
		mkETL
2336ea
		mksynfig
2336ea
		mksynfigstudio
Carlos Lopez ec891a
2336ea
		mkpack
2336ea
	else
2336ea
		[ -d $HOME/synfig-packages ] || mkdir -p $HOME/synfig-packages
Yu Chen c00758
		#DEB_LIST="build-essential,autoconf,automake,libltdl3-dev,libtool,gettext,libpng12-dev,libjpeg62-dev,libfreetype6-dev,libfontconfig1-dev,libgtk3.0-dev,libxml2-dev,bzip2,rpm,alien,xsltproc"
f89708
		for ARCH in i386 amd64; do
2336ea
		if [[ $ARCH == 'i386' ]];then
2336ea
			SETARCH='linux32'
2336ea
		else
2336ea
			SETARCH='linux64'
2336ea
		fi
03342a
		
03342a
		# If chroot version changed -> reset existing buildroot
2dade7
		if [[ `cat $PACKAGES_BUILDROOT.$ARCH/etc/chroot.id` != "Synfig Packages Buildroot v${BUILDROOT_VERSION}" ]]; then
03342a
			echo "======================= !!! ======================"
03342a
			echo "   Buildroot version changed. Force update..."
03342a
			echo "======================= !!! ======================"
2dade7
			if [ -e $PACKAGES_BUILDROOT.$ARCH/ ]; then
2dade7
				rm -rf $PACKAGES_BUILDROOT.$ARCH/
2dade7
			fi
19f90d
			debootstrap --arch=$ARCH --variant=buildd  --include=sudo lenny $PACKAGES_BUILDROOT.$ARCH http://archive.debian.org/debian
19f90d
			#debootstrap --arch=$ARCH --variant=buildd  --include=sudo squeeze $PACKAGES_BUILDROOT.$ARCH http://ftp.de.debian.org/debian
2336ea
		fi
2336ea
		#set chroot ID
2dade7
		echo "Synfig Packages Buildroot v${BUILDROOT_VERSION}" > $PACKAGES_BUILDROOT.$ARCH/etc/chroot.id
03342a
		
03342a
		# If library set changed -> remove all existing libraries to force rebuild
03342a
		if [[ `cat $PACKAGES_BUILDROOT.$ARCH/etc/chroot_libset.id` != "${BUILDROOT_LIBRARY_SET_ID}" ]]; then
03342a
			echo "======================= !!! ======================"
03342a
			echo "   Library set is changed. Force cleanup..."
03342a
			echo "======================= !!! ======================"
03342a
			sleep 5
12fadd
			echo "Cleaning $PACKAGES_BUILDROOT.$ARCH/usr/local ..."
12fadd
			rm -rf $PACKAGES_BUILDROOT.$ARCH/usr/local || true
12fadd
			echo "Cleaning $PACKAGES_BUILDROOT.$ARCH/$PREFIX ..."
12fadd
			rm -rf $PACKAGES_BUILDROOT.$ARCH/$PREFIX || true
12fadd
			echo
03342a
		fi
03342a
		#set library set ID
03342a
		echo "${BUILDROOT_LIBRARY_SET_ID}" > $PACKAGES_BUILDROOT.$ARCH/etc/chroot_libset.id
03342a
		
2336ea
		cp -f $0 $PACKAGES_BUILDROOT.$ARCH/build.sh
03342a
		
f380f6
		#resolv.conf
f380f6
		cp -f /etc/resolv.conf $PACKAGES_BUILDROOT.$ARCH/etc/resolv.conf
2336ea
		#keep proxy settings
Carlos Lopez ec891a
		if ! [ -z $http_proxy ]; then
2336ea
			#echo "export http_proxy=\"$http_proxy\";" >> $PACKAGES_BUILDROOT.$ARCH/root/.bashrc
2336ea
			#echo "echo 'proxy export done';" >> $PACKAGES_BUILDROOT.$ARCH/root/.bashrc
2336ea
			echo "Acquire::http::Proxy \"$http_proxy\";" > $PACKAGES_BUILDROOT.$ARCH/etc/apt/apt.conf
2336ea
		fi
2336ea
		#fetch sources to cache
Androbin ed6901
		if [ -d $PACKAGES_BUILDROOT.$ARCH/source/synfig.git ]; then
Androbin ed6901
		    rm -rf $PACKAGES_BUILDROOT.$ARCH/source/synfig.git || true
Androbin ed6901
		fi
5e29b0
		if [ -d $PACKAGES_BUILDROOT/synfig.git ]; then
5e29b0
			if [[ $WORKDIR_IS_REPO == 1 ]]; then
5e29b0
				rm -rf "$PACKAGES_BUILDROOT/synfig.git"
5e29b0
			fi
5e29b0
		fi
2336ea
		if ! [ -d $PACKAGES_BUILDROOT/synfig.git ]; then
2336ea
			if [[ $WORKDIR_IS_REPO == 1 ]]; then
2336ea
				git clone $SYNFIG_REPO_DIR $PACKAGES_BUILDROOT/synfig.git
04d925
				sed -i 's|url = .*|url = git://github.com/synfig/synfig.git|' $PACKAGES_BUILDROOT/synfig.git/.git/config
2336ea
			else
04d925
				git clone git://github.com/synfig/synfig.git $PACKAGES_BUILDROOT/synfig.git
2336ea
			fi
2336ea
		fi
2336ea
		pushd $PACKAGES_BUILDROOT
2336ea
		cd synfig.git && git fetch && cd ..
f3799d
		#[ ! -e git-$GITVERSION.tar.bz2 ] && wget -c http://kernel.org/pub/software/scm/git/git-$GITVERSION.tar.bz2
f62f60
		rsync -av rsync://download.tuxfamily.org/pub/synfig/packages/sources/base/ ./
2336ea
		if [[ $OPENGL == 1 ]]; then
f62f60
			rsync -av rsync://download.tuxfamily.org/pub/synfig/packages/sources/opengl/ ./
2336ea
		fi
2336ea
		popd
2336ea
		#copy sources
2336ea
		[ -d $PACKAGES_BUILDROOT.$ARCH/source ] || mkdir -p $PACKAGES_BUILDROOT.$ARCH/source
2336ea
		cp -rf $PACKAGES_BUILDROOT/* $PACKAGES_BUILDROOT.$ARCH/source/
22d5b4
22d5b4
		#set up the /proc link
22d5b4
		echo "Mounting proc..."
22d5b4
		if ! ( mount | egrep "proc on $PACKAGES_BUILDROOT.${ARCH}/proc" ); then
22d5b4
			mount -o bind /proc $PACKAGES_BUILDROOT.$ARCH/proc
22d5b4
			echo "   Done."
22d5b4
		else
22d5b4
			echo "   Already mounted. Skipping."
22d5b4
		fi
22d5b4
2336ea
		#go to chroot
2336ea
		$SETARCH chroot $PACKAGES_BUILDROOT.$ARCH env http_proxy=$http_proxy bash /build.sh package $SELECTEDREVISION
22d5b4
22d5b4
		umount $PACKAGES_BUILDROOT.$ARCH/proc || true
22d5b4
2336ea
		mv -f $PACKAGES_BUILDROOT.$ARCH/packages/* $PACKAGES_PATH
2336ea
		done
2336ea
		echo
2336ea
		echo
2336ea
		find $PACKAGES_PATH/synfigstudio* -maxdepth 1
2336ea
		echo "     DONE BUILDING PACKAGES INTO $HOME/synfig-packages"
2336ea
		echo
2336ea
	fi
2336ea
}
2336ea
2336ea
###=================================== MAIN ======================================
2336ea
2336ea
if [ -z $1 ]; then
2336ea
	ARG='standart'
2336ea
else
2336ea
	ARG=$1
2336ea
fi
2336ea
2336ea
case $ARG in
2336ea
	full)
2336ea
		MODE='full'
2336ea
		mk
2336ea
		exit;;
2336ea
	standart)
2336ea
		MODE='standart'
2336ea
		mk
2336ea
		exit;;
2336ea
	quick)
2336ea
		MODE='quick'
2336ea
		mk
2336ea
		exit;;
2336ea
	package)
24a789
		export MODE='package'
24a789
		#get_dependencies
24a789
		./install-requirements-linux.sh
2336ea
		initialize
2336ea
		mk$ARG
2336ea
		exit;;
2336ea
	*)
160b06
		if [ -e /etc/chroot.id ]; then
160b06
			MODE='package'
160b06
		else
160b06
			MODE='standart'
160b06
		fi
2336ea
		initialize
2336ea
		mk$ARG
2336ea
		exit;;
2336ea
esac