blob: 2afe31c9b787b232657ed3f9ba26666c2aa75805 (
plain) (
tree)
|
|
#!/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
if [[ "${envname}" == "" ]]; then
export envname=${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"
export SRCTYPE="git"
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 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_src_script {
cd "${srcdir}"
check_error $?
$*
check_error $?
}
function run_enable_same_dir_build {
echo "copy sources from $srcdir to ${builddir}"
cp -r "$srcdir" "${builddir}/.."
export srcdir="$builddir"
echo "change src dir to $srcdir"
}
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_clone {
if [[ "${SRCTYPE}" == "git" ]]; then
run_git_clone $1
elif [[ "${SRCTYPE}" == "hg" ]]; then
run_hg_clone $1
else
echo "Error: unknown SRCTYPE: ${SRCTYPE}"
exit 1
fi
}
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 run_switch_branch {
if [[ "${SRCTYPE}" == "git" ]]; then
run_git_switch_branch $1
elif [[ "${SRCTYPE}" == "hg" ]]; then
run_hg_switch_branch $1
else
echo "Error: unknown SRCTYPE: ${SRCTYPE}"
exit 1
fi
}
function repack_paths {
if [[ "$1" == "" ]]; then
return
fi
IFS=":"
packedpaths=""
for var in $1
do
packedpaths="${packedpaths}${bindir}/$var:"
done
unset IFS
echo "export $2=${packedpaths}\$$2" >>"${envfile}"
check_error $?
}
function package_use {
repack_paths "$ENV_PATH" "PATH"
repack_paths "$ENV_LD_LIBRARY_PATH" "LD_LIBRARY_PATH"
repack_paths "$ENV_PKG_CONFIG_PATH" "PKG_CONFIG_PATH"
repack_paths "$ENV_MANPATH" "MANPATH"
}
function common_use_package {
cd "${scriptsdir}"
check_error $?
export envfile="../env/run${envname}.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 package_get_source {
run_clone "${SRCURL}"
}
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}"
}
|