Skip to content
Snippets Groups Projects
Select Git revision
  • master default protected
  • release/202005
  • release/202001
  • release/201912
  • release/201911
  • release/releaseWindowsTestOne
  • release/windowsReleaseTest
  • release/releaseTest
  • release/releaseWindowsTest
  • release/201910
  • release/qt/201910
  • release/windows-test/201910
  • release/201908
  • release/201906
  • release/201905
  • release/201904
  • release/201903
  • release/201902
  • release/201901
  • release/201812
  • 4.0.0
  • 2.2.0
  • 2.1.0
  • 2.0.1
  • 2.0.0
  • 1.4.1
  • 1.4.0
  • 1.3.0
  • 1.2.0
  • 1.1.0
30 results

hudson-sflphone-script.sh

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    hudson-sflphone-script.sh 3.58 KiB
    #!/bin/bash
    #
    # Script used by Hudson continious integration server to build SFLphone
    #
    # Author: Emmanuel Milou <emmanuel.milou@savoirfairelinux.com>
    
    XML_RESULTS="cppunitresults.xml"
    TEST=0
    BUILD=
    CODE_ANALYSIS=0
    DOXYGEN=0
    
    CONFIGDIR=~/.config
    SFLCONFDIR=${CONFIGDIR}/sflphone
    
    function run_code_analysis {
    	# Check if cppcheck is installed on the system
    	if [ `which cppcheck &>/dev/null ; echo $?` -ne 1 ] ; then
    		pushd src
    		cppcheck . --enable=all --xml --inline-suppr 2> cppcheck-report.xml
    		popd
    	fi
    }
    
    
    function gen_doxygen {
    	# Check if doxygen is installed on the system
    	if [ `which doxygen &>/dev/null ; echo $?` -ne 1 ] ; then
    		pushd doc/doxygen
    		doxygen core-doc.cfg.in
    		popd
    	fi
    }
    
    
    function launch_unit_test_daemon {
            # Run the unit tests for the daemon
            pushd daemon/test
            # Remove the previous XML test file
            rm -rf $XML_RESULTS
            ./run_tests.sh || exit 1
            popd
    }
    
    
    function launch_functional_test_daemon {
            # Run the python functional tests for the daemon
    
            # make sure no other instance are currently running
            killall sflphoned
            killall sipp
    
            # make sure the configuration directory created
            CONFDIR=~/.config
            SFLCONFDIR=${CONFDIR}/sflphone
    
            eval `dbus-launch --auto-syntax`
    
            if [ ! -d ${CONFDIR} ]; then
                mkdir ${CONFDIR}
            fi
    
            if [ ! -d ${SFLCONFDIR} ]; then
                mkdir ${SFLCONFDIR}
            fi
    
            # make sure the most recent version of the configuration
            # is installed
            pushd tools/pysflphone
                cp -f sflphoned.functest.yml ${SFLCONFDIR}
            popd
    
            # launch sflphone daemon, wait some time for
            # dbus registration to complete
            pushd daemon
                ./src/sflphoned &
                sleep 3
            popd
    
            # launch the test script
            pushd tools/pysflphone
                nosetests --with-xunit test_sflphone_dbus_interface.py
            popd
    }
    
    
    function build_daemon {
    	# Compile the daemon
    	pushd daemon
    	# Run static analysis code tool
    	if [ $CODE_ANALYSIS == 1 ]; then
    		run_code_analysis
    	fi
    	make distclean
    	./autogen.sh
    	# Compile pjproject first
    	pushd libs/pjproject
    	./autogen.sh
    	./configure
    	make && make dep
    	popd
    	./configure --prefix=/usr
    	make clean
    	# Compile src code
    	make -j
    	# Generate documentation
    	make doc
    	if [ $DOXYGEN == 1 ]; then
    		gen_doxygen
    	fi
    	# Compile unit tests
    	make check
    	popd
    }
    
    function build_gnome {
    	# Compile the plugins
    	pushd plugins
    	make distclean
    	./autogen.sh
    	./configure --prefix=/usr
    	make -j
    	popd
    
    	# Compile the client
    	pushd gnome
    	make distclean
    	./autogen.sh
    	./configure --prefix=/usr
    	make clean
    	make -j 1
    	make check
    	popd
    }
    
    
    if [ "$#" -eq 0 ]; then   # Script needs at least one command-line argument.
    	echo "Usage $0 -b select which one to build: daemon or gnome
    				  -t enable unit tests after build"
    	exit $E_OPTERR
    fi
    
    
    git clean -f -d -x
    
    while getopts ":b: t a d" opt; do
    	case $opt in
    		b)
    			echo "-b was triggered. Parameter: $OPTARG" >&2
    			BUILD=$OPTARG
    			;;
    		t)
    			echo "-t was triggered. Tests will be run" >&2
    			TEST=1
    			;;
    		a)
    			echo "-a was triggered. Static code analysis will be run" >&2
    			CODE_ANALYSIS=1
    			;;
    		d)
    			echo "-d was triggered. Doxygen documentation will be generated" >&2
    			DOXYGEN=1
    			;;
    		\?)
    			echo "Invalid option: -$OPTARG" >&2
    			exit 1
    			;;
    		:)
    			echo "Option -$OPTARG requires an argument." >&2
    			exit 1
    			;;
    		esac
    done
    
    # Call appropriate build function, with parameters if needed
    build_$BUILD
    
    if [ $TEST == 1 ]; then
        # launch_unit_test_daemon
        launch_functional_test_daemon
    fi
    
    # SUCCESS
    exit 0