#!/bin/bash function check_error { if [ "$1" != 0 ]; then echo "Error detected" exit "$1" fi } function common_build_init { export dir=$(pwd) if [[ "${installname}" == "" ]]; then export installname=${package} fi export srcdir=$(realpath "${dir}/../src/${package}") if [ ! -d "${srcdir}" ]; then echo "Error: Package sources directory not exists for package '${package}'." exit 3 fi if [ ! -d "../env" ]; then mkdir -p "../env" check_error $? fi if [ ! -d "../bin" ]; then mkdir -p "../bin" check_error $? fi if [ ! -d "../tmp" ]; then mkdir -p "../tmp" check_error $? fi export builddir=$(realpath "${dir}/../tmp/${package}") export bindir=$(realpath "${dir}/../bin/${installname}") rm -rf "${builddir}" check_error $? mkdir -p "${builddir}" check_error $? } function common_package_init { export scriptsdir=$(realpath .) if [[ "${package}" == "" ]]; then echo "Error: Missing package name" echo "Example: ./build.sh virglrenderer" exit 1 fi export packagefile="${package}.sh" if [ ! -f "../packages/${packagefile}" ]; then echo "Error: Package '${package}' not exists." exit 2 fi } function common_run_package { cd ../packages check_error $? echo "${package}.sh" source "./${package}.sh" check_error $? } function common_use_package { cd "${scriptsdir}" check_error $? export envfile="../env/run${package}.sh" echo "#!/bin/bash" >"${envfile}" check_error $? echo "" >>"${envfile}" echo "package_use" package_use check_error $? echo "\$*" >>"${envfile}" check_error $? chmod 0755 "${envfile}" check_error $? } function env_path { echo "export PATH=${bindir}/$1:\$PATH" >>"${envfile}" check_error $? } function env_lib_library_path { echo "export LD_LIBRARY_PATH=${bindir}/$1:\$LD_LIBRARY_PATH" >>"${envfile}" check_error $? } function env_pkg_config_path { echo "export PKG_CONFIG_PATH=${bindir}/$1:\$PKG_CONFIG_PATH" >>"${envfile}" check_error $? } function env_man { echo "export MANPATH=${bindir}/$1:\$MANPATH" >>"${envfile}" check_error $? } function run_autoreconf { cd "${srcdir}" check_error $? echo "make distclean" make distclean echo "autoreconf $*" autoreconf $* check_error $? } function run_configure { cd "${builddir}" check_error $? echo "configure --prefix=\"${bindir}\" $*" "$srcdir"/configure --prefix="${bindir}" $* check_error $? } function run_cmake { cd "${builddir}" check_error $? echo "cmake -DCMAKE_INSTALL_PREFIX:PATH=\"${bindir}\" \"$srcdir\" $*" cmake -DCMAKE_INSTALL_PREFIX:PATH="${bindir}" "$srcdir" $* check_error $? } function run_make { echo "make" make check_error $? } function run_make_install { echo "make install" make install check_error $? } function run_git_clone { echo "clone git repository $1" git clone "$1" "../src/${package}" check_error $? } function run_hg_clone { echo "clone hg repository $1" hg clone "$1" "../src/${package}" check_error $? } function run_git_switch_branch { cd "${srcdir}" check_error $? if [[ "${srcbranch}" == "" ]]; then export srcbranch="$1" fi echo "git checkout ${srcbranch}" git checkout "${srcbranch}" check_error $? } function run_hg_switch_branch { cd "${srcdir}" if [[ "${srcbranch}" == "" ]]; then export srcbranch="$1" fi echo "hg update ${srcbranch}" hg update "${srcbranch}" check_error $? } function package_use { env_path "bin" env_lib_library_path "lib" } function package_update_source { cd "../src/${package}" if [ -d .git ]; then echo "git fetch origin" git fetch origin return fi if [ -d .hg ]; then echo "hg pull" hg pull check_error $? return fi } function common_clean_destination { echo "clean ${bindir}" rm -rf "${bindir}" }