summaryrefslogblamecommitdiff
path: root/scripts/include/common.sh
blob: 27c17676062958dd3fbe9ab907dfa99ea0a708d3 (plain) (tree)
1
2
3
4
5
6
7
8
9

           


                             
                 


      






                                         



                                     





                                                                                    

                              
                      


                              
                      


                              
                      

      



                                                            
                  
                          
                  



















                                                      
                  

                            
                  


                             
                      
                  
                                            
                                    
                  
                          

                      
                  
                             
                  
                           
                  


                   
                                                         
                  


                               
                                                                               
                  


                              
                                                                               
                  


                  
                                                               
                  



                         
                  



                         
                  

 






                                                   

                        

                                              
                                               
                  



                    

                                                                         
                                                              
                  




                   
                  




                           
                  



                                  
                                      
                  



                                 
                                     
                  



                                
                  





                                       
                  








                                       
                            
                  
















                                
                      




                                   

                          
 
#!/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"

    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${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 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_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_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}"
}