Edit

kc3-lang/SDL/build-scripts/checker-buildbot.sh

Branch :

  • Show log

    Commit

  • Author : Philipp Wiesemann
    Date : 2015-06-21 17:33:46
    Hash : 0e45984f
    Message : Fixed crash if initialization of EGL failed but was tried again later. The internal function SDL_EGL_LoadLibrary() did not delete and remove a mostly uninitialized data structure if loading the library first failed. A later try to use EGL then skipped initialization and assumed it was previously successful because the data structure now already existed. This led to at least one crash in the internal function SDL_EGL_ChooseConfig() because a NULL pointer was dereferenced to make a call to eglBindAPI().

  • build-scripts/checker-buildbot.sh
  • #!/bin/bash
    
    # This is a script used by some Buildbot buildslaves to push the project
    #  through Clang's static analyzer and prepare the output to be uploaded
    #  back to the buildmaster. You might find it useful too.
    
    # Install Clang (you already have it on Mac OS X, apt-get install clang
    #  on Ubuntu, etc),
    # or download checker at http://clang-analyzer.llvm.org/ and unpack it in
    #  /usr/local ... update CHECKERDIR as appropriate.
    
    FINALDIR="$1"
    
    CHECKERDIR="/usr/local/checker-276"
    if [ ! -d "$CHECKERDIR" ]; then
        echo "$CHECKERDIR not found. Trying /usr/share/clang ..." 1>&2
        CHECKERDIR="/usr/share/clang/scan-build"
    fi
    
    if [ ! -d "$CHECKERDIR" ]; then
        echo "$CHECKERDIR not found. Giving up." 1>&2
        exit 1
    fi
    
    if [ -z "$MAKE" ]; then
        OSTYPE=`uname -s`
        if [ "$OSTYPE" == "Linux" ]; then
            NCPU=`cat /proc/cpuinfo |grep vendor_id |wc -l`
            let NCPU=$NCPU+1
        elif [ "$OSTYPE" = "Darwin" ]; then
            NCPU=`sysctl -n hw.ncpu`
        elif [ "$OSTYPE" = "SunOS" ]; then
            NCPU=`/usr/sbin/psrinfo |wc -l |sed -e 's/^ *//g;s/ *$//g'`
        else
            NCPU=1
        fi
    
        if [ -z "$NCPU" ]; then
            NCPU=1
        elif [ "$NCPU" = "0" ]; then
            NCPU=1
        fi
    
        MAKE="make -j$NCPU"
    fi
    
    echo "\$MAKE is '$MAKE'"
    
    set -x
    set -e
    
    cd `dirname "$0"`
    cd ..
    
    rm -rf checker-buildbot analysis
    if [ ! -z "$FINALDIR" ]; then
        rm -rf "$FINALDIR"
    fi
    
    mkdir checker-buildbot
    cd checker-buildbot
    
    # You might want to do this for CMake-backed builds instead...
    PATH="$CHECKERDIR:$PATH" scan-build -o analysis cmake -DCMAKE_BUILD_TYPE=Debug ..
    
    # ...or run configure without the scan-build wrapper...
    #CC="$CHECKERDIR/libexec/ccc-analyzer" CFLAGS="-O0" ../configure
    
    # ...but this works for our buildbots just fine (EXCEPT ON LATEST MAC OS X).
    #CFLAGS="-O0" PATH="$CHECKERDIR:$PATH" scan-build -o analysis ../configure
    
    rm -rf analysis
    PATH="$CHECKERDIR:$PATH" scan-build -o analysis $MAKE
    mv analysis/* ../analysis
    rmdir analysis   # Make sure this is empty.
    cd ..
    chmod -R a+r analysis
    chmod -R go-w analysis
    find analysis -type d -exec chmod a+x {} \;
    if [ -x /usr/bin/xattr ]; then find analysis -exec /usr/bin/xattr -d com.apple.quarantine {} \; 2>/dev/null ; fi
    
    if [ ! -z "$FINALDIR" ]; then
        mv analysis "$FINALDIR"
    else
        FINALDIR=analysis
    fi
    
    rm -rf checker-buildbot
    
    echo "Done. Final output is in '$FINALDIR' ..."
    
    # end of checker-buildbot.sh ...