source: tags/testbuild/util/jenkins_build.sh

Last change on this file was 13079, checked in by westram, 10 years ago
File size: 4.2 KB
Line 
1#!/bin/bash
2set -x
3set -o errexit
4
5ARG=${1:-}
6
7# set standard variables expected by ARB build
8export ARBHOME=`pwd`
9export PATH=$ARBHOME/bin:$PATH
10export LD_LIBRARY_PATH=$ARBHOME/lib
11
12# OS dependant settings
13OSNAME=`uname -s`
14case $OSNAME in
15  Darwin)
16    export PREFIX=/opt/local
17    export PATH=$PATH:$PREFIX/sbin:$PREFIX/bin
18    export CC=clang
19    export CXX=clang++
20    export MACH=DARWIN
21    ;;
22  Linux)
23    ;;
24  *)
25    echo "Error: unhandled OSNAME '$OSNAME'"
26    false
27    ;;
28esac
29
30# prepare config.makefile
31CFG=config.makefile
32rm -f $CFG
33
34TARSUF=""
35UNIT_TESTS=1
36DEBUG=0
37SANITIZE=1
38DEVELOPER="JENKINS" # see ../UNIT_TESTER/README.txt@DEVEL_JENKINS
39
40case $MODE in
41  DEBUG)
42    DEBUG=1
43    TARSUF="-dbg"
44    ;;
45  NDEBUG)
46    TARSUF="-ndbg"
47    ;;
48  RELEASE)
49    DEVELOPER="RELEASE"
50    UNIT_TESTS=0
51    SANITIZE=0 # never sanitize release!
52    ;;
53  *)
54    echo "Error: unknown MODE '$MODE' passed to jenkins_build.sh"
55    false
56    ;;
57esac
58
59case $OSNAME in
60  Darwin)
61    echo "DARWIN := 1" >> $CFG
62    echo "MACH := DARWIN" >> $CFG
63    UNIT_TESTS=0
64    ;;
65  Linux)
66    echo "LINUX := 1" >> $CFG
67    echo "MACH := LINUX" >> $CFG
68    ;;
69  *)
70    echo "Error: unhandled OSNAME '$OSNAME'"
71    false
72    ;;
73esac
74
75if [ -z "${TGTNAME:-}" ]; then
76    echo "Error: unknown TGTNAME - build refused"
77    false
78fi
79   
80echo "DEBUG := $DEBUG" >> $CFG
81echo "UNIT_TESTS := $UNIT_TESTS" >> $CFG
82echo "OPENGL := 0" >> $CFG
83echo "DEVELOPER := $DEVELOPER" >> $CFG
84echo "DEBUG_GRAPHICS := 0" >> $CFG
85echo "PTPAN := 0" >> $CFG
86echo "ARB_64 := 1" >> $CFG
87echo "TRACESYM := 1" >> $CFG
88echo "SANITIZE := $SANITIZE" >> $CFG
89echo "COVERAGE := 0" >> $CFG
90# done with config.makefile
91
92# skip build?
93BUILD=1
94if [ "$MODE" == "NDEBUG" -a $UNIT_TESTS == 0 ]; then
95    echo "Modes NDEBUG and RELEASE are identical for $OSNAME"
96    BUILD=0
97fi
98
99# build, tar and test
100if [ $BUILD == 1 ]; then
101    if [ "$ARG" == "fake_build" ]; then
102        echo "Faking build"
103        echo "Faked arb.tgz"     > arb.tgz
104        echo "Faked arb-dev.tgz" > arb-dev.tgz
105    else
106        if [ "$ARG" == "from_tarball" ]; then
107            echo "Test clean before make (tarball build)"
108            make clean
109        fi
110        make build
111        make tarfile_quick
112    fi
113
114    # jenkins archieves all files matching "**/arb*.tgz"
115    # jenkins publishes     files matching "**/arb*.tgz", but not "**/arb*dev*.tgz,**/arb*bin*.tgz"
116
117    if [ -n "${SVN_TAG:-}" ]; then
118        # tagged build
119        VERSION_ID=${SVN_TAG}${TARSUF}
120        # remove arb-prefixes (added below)
121        VERSION_ID="${VERSION_ID##arb[-_]}"
122    else
123        # normal build
124        VERSION_ID=r${SVN_REVISION}${TARSUF}
125    fi
126
127    VERSION_ID=arb-${VERSION_ID}
128    VERSION_ID_TARGET=${VERSION_ID}.${TGTNAME}
129
130    if [ "$MODE" == "RELEASE" ]; then
131        if [ "${TGTNAME}" == "ubuntu1004-amd64" ]; then
132            # perform things needed only once (pack source, copy README + install script):
133            # 1. pack source (svn version of slave and master must match!)
134            if [ "$ARG" == "fake_build" ]; then
135                echo "Faked ${VERSION_ID}-source.tgz" > ${VERSION_ID}-source.tgz
136            else
137                if [ "$ARG" == "from_tarball" ]; then
138                    echo "Note: build from tarball - do not attempt to create a tarball"
139                else
140                    make save
141                    # archived and published on ftp:
142                    cp --dereference arbsrc.tgz ${VERSION_ID}-source.tgz
143                    rm arbsrc*.tgz
144                fi
145            fi
146            # 2. move extra files into folder 'toftp' - content is copied to release directory
147            mkdir toftp
148            cp -p arb_README.txt toftp
149            cp -p arb_install.sh toftp
150            ls -al toftp
151        fi
152
153        # archived and published on ftp:
154        mv arb.tgz ${VERSION_ID_TARGET}.tgz
155    else
156        # only archived (needed by SINA):
157        mv arb.tgz ${VERSION_ID_TARGET}-bin.tgz
158    fi
159    # only archived (needed by SINA):
160    mv arb-dev.tgz ${VERSION_ID_TARGET}-dev.tgz
161
162    make ut
163
164    echo "-------------------- compiled-in version info:"
165    (bin/arb_ntree --help || true)
166    echo "-------------------- existing tarballs:"
167    ls -al arb*.tgz
168    echo "--------------------"
169else
170    echo "Skipping this build."
171    # @@@ maybe need to fake unit-test-result here
172fi
Note: See TracBrowser for help on using the repository browser.