Skip to content
Extraits de code Groupes Projets
Sélectionner une révision Git
  • f1125b0017a727b522ef43b086e7d0256e9f1a9d
  • master par défaut protégée
  • rust-playlist-sync
  • rust
  • fix-qt-deprecated-qvariant-type
  • fix-mpris-qtwindow-race-condition
  • rust-appimage-wayland
  • windows-build-rebased
  • v2.5 protégée
  • v2.4 protégée
  • v2.3-1 protégée
  • v2.3 protégée
  • v2.2 protégée
  • v2.1 protégée
  • v2.0 protégée
  • v1.8-3 protégée
  • v1.8-2 protégée
  • v1.8-1 protégée
  • v1.8 protégée
  • v1.7 protégée
  • v1.6 protégée
  • v1.5 protégée
  • v1.4 protégée
  • v1.3 protégée
  • v1.2 protégée
  • v1.1 protégée
  • v1.0 protégée
27 résultats

macro.h

Blame
  • validate.bash 7,33 Kio
    #!/bin/bash
    
    ### GLOBAL VARIABLES #########################################################
    INFORMATION_COLOR="$(printf "\\033[0;32m")"
    DEFAULT_COLOR="$(printf "\\033[0;39m")"
    IMPORTANT_COLOR="$(printf "\\033[1;31m")"
    WARNING_COLOR="$(printf "\\033[4;33m")"
    
    LKT_DEBUG=""                # Whether or not to build in debug mode
    LKT_STATIC_MODULES=""       # Build modules inside liblektor.so or not
    LKT_COMPILER=""             # The compiler to use, the basename
    LKT_STEP=""                 # Steps: configure, build, etc
    LKT_DIR="$PWD"              # The project directory
    LKT_CONFIGURE_OPTIONS=""    # Options to pass to the configure command
    LKT_CORE_NUMBER=4           # Number of cores to use with make
    LKT_TEST=""                 # Which tests to perform
    LKT_SRC=$SRC_DIR            # Where to find the sources of lektor
    LKT_WORK=$WORK_DIR          # The work dir, where to play
    
    # Below: global variables that will be initialized latter
    LKT_INSTALL=""              # Install folder of lektor
    LKT_BUILD=""                # Build folder of lektor
    
    ### AVAILABLE TESTS ##########################################################
    
    function test_simple ()
    {
        check_cd $LKT_INSTALL
        ./lektord &
        local _child_pid=$!
        ./lkt pwd=hashire adm kil
        sleep 5
        kill $_child_pid
    }
    
    ### Utility functions ########################################################
    function die ()
    {
        printf "$IMPORTANT_COLOR$@$DEFAULT_COLOR\n"
        exit 1
    }
    
    function check_cd ()
    {
        [ $# -ne 1 ] && die "Invalid number of argument '$#' for cd command"
        cd $1        || die "Can't go to folder $1"
    }
    
    function check_mkdir ()
    {
        mkdir $* || die "Failed to mkdir '$*'"
    }
    
    function check_configure ()
    {
        $LKT_DIR/configure $* || die "Failed to configure with $LKT_COMPILER"
    }
    
    function check_make ()
    {
        make $* || die "Failed to make with compiler $LKT_COMPILER"
    }
    
    function help ()
    {
    cat << EOF
    Usage validate.bash --build=* --step=* [option]
    
        --help, -h      Prints this help message.
        --build=comp    Specify the compiler.
        --step=AA,BB,.. Specify the steps to do. The list may contains the
                        following items: configure, launch, build.
    
    Step configure options:
        --debug             Perform a debug build.
        --static-modules    Build modules inside liblektor.so, not in their own
                            .so files.
    
    Step launch options:
        --test=AA,BB,..     Perform the specified tests.
    
    EOF
    }
    
    if ! [ -f $PWD/scripts/validate.bash ] ; then
        die "This script should be run from the root of the project, you are in $PWD"
    fi
    SQLITE3=$(which sqlite3)
    [ $? -ne 0 ] && die "Can't find the sqlite3 executable"
    
    ### PREPARE ##################################################################
    # Globals:                                                                   #
    # - LKT_COMPILER            Which compiler to use                            #
    # - LKT_WORK                The base folder which will contains all the      #
    #                           builds and installs                              #
    function do_prepare ()
    {
        check_mkdir -p $LKT_WORK/{build.$LKT_COMPILER,install.$LKT_COMPILER}
        echo "Created folders $LKT_WORK/{build.$LKT_COMPILER,install.$LKT_COMPILER}"
    }
    
    ### CONFIGURE ################################################################
    # Globals:                                                                   #
    # - LKT_DIR                 Project root directory                           #
    # - LKT_COMPILER            The compiler used to build                       #
    # - LKT_CONFIGURE_OPTIONS   Options to pass to the configure command         #
    function do_configure ()
    {
        check_cd $LKT_BUILD
        check_configure                                                          \
            --prefix=$LKT_DIR/install.$LKT_COMPILER                              \
            $LKT_CONFIGURE_OPTIONS
        check_cd $LKT_DIR
    }
    
    ### BUILD THE PROJECT ########################################################
    # Globals:                                                                   #
    # - LKT_DIR                 Project root directory                           #
    # - LKT_COMPILER            The compiler used to build                       #
    function do_build ()
    {
        check_cd $LKT_BUILD
        check_make -j$LKT_CORE_NUMBER
        check_make install
        check_cd $LKT_DIR
    }
    
    ### PERFORM THE STEPS ########################################################
    # Globals:                                                                   #
    # - LKT_STEP                Steps to perform                                 #
    function do_steps ()
    {
        local _prepare=""
        local _build=""
        local _configure=""
        local _launch=""
        for step in $LKT_STEP ; do
            case "$step" in
                build)      _build="yes";;
                configure)  _configure="yes";;
                launch)     _launch="yes";;
                prepare)    _prepare="yes";;
            esac
        done
    
        [ "x$_prepare"   = "xyes" ] && do_prepare
        [ "x$_configure" = "xyes" ] && do_configure
        [ "x$_build"     = "xyes" ] && do_build
        [ "x$_launch"    = "xyes" ] && do_launch
    }
    
    ### PERFORM THE TESTS ########################################################
    # Globals:                                                                   #
    # - LKT_TEST                Which tests to perform                           #
    # - LKT_DIR                 The project root directory                       #
    function do_launch ()
    {
        for test in $LKT_TEST ; do
            case "$test" in
                simple)     test_simple;;
                *)          die "Test not available"
            esac
        done
    }
    
    ### PROCESS ARGS #############################################################
    # Globals:                                                                   #
    # - LKT_DEBUG               Whether or not to build in debug mode            #
    # - LKT_STATIC_MODULES      Build lektor modules inside liblektor.so         #
    # - LKT_CONFIGURE_OPTIONS   Options to pass to the configure command         #
    function process_args ()
    {
        if [ "x$LKT_DEBUG" = "xyes" ] ; then
            LKT_CONFIGURE_OPTIONS="$LKT_CONFIGURE_OPTIONS --with-debug"
        fi
        if [ "x$LKT_STATIC_MODULES" = "xyes" ] ; then
            LKT_CONFIGURE_OPTIONS="$LKT_CONFIGURE_OPTIONS --with-static-module"
        fi
        LKT_CONFIGURE_OPTIONS="$LKT_CONFIGURE_OPTIONS CC=$LKT_COMPILER"
    }
    
    ### PARSE ARGS ###############################################################
    for arg in $* ; do
        case "$arg" in
            --help|-h)
                help
                exit 0
                ;;
            --debug)
                LKT_DEBUG="yes"
                ;;
            --build=*)
                LKT_COMPILER=$(echo "A$arg" | sed -e 's/A--build=//g')
                ;;
            --static-modules)
                LKT_STATIC_MODULES="yes"
                ;;
            --step=*)
                LKT_STEP=$(echo "A$arg" | sed -e 's/A--step=//g' -e 's/,/ /g')
                ;;
            --test=*)
                LKT_TEST=$(echo "A$arg" | sed -e 's/A--test=//g' -e 's/,/ /g')
                ;;
            *)
                die "Unknown argument $arg"
                ;;
        esac
    done
    
    ### GLOBALS THAT NEEDS ARGUMENTS TO BE INITIALIZED ###########################
    # - LKT_INSTALL             Where lektor will be installed                   #
    # - LKT_BUILD               Where lektor will be configured                  #
    LKT_INSTALL=$WORK_DIR/install.$LKT_COMPILER
    LKT_BUILD=$WORK_DIR/build.$LKT_COMPILER
    
    ### DO OUR STUFF HERE ########################################################
    process_args
    do_steps
    exit 0