source: tags/ms_r18q1/util/jenkins_build.sh

Last change on this file was 16412, checked in by westram, 7 years ago
  • reintegrates 'unittest' into 'trunk'
    • limit memory for unittest code to 1Gb (not with sanitizer)
      • instantly reveals accidental allocations caused by unsigned underflow
    • fix underflows in ACI commands format + format_sequence (allocated 4Gb with certain parameters)
    • reactivate sanitizer for builds
  • adds: log:branches/unittest@16405:16411
File size: 4.5 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# fallback language (avoid perl spam)
31if [ -z "${LANG:-}" ]; then
32    echo "Note: LANG was unset (using fallback 'C')"
33    export LANG=C
34else
35    echo "Note: LANG is '$LANG'"
36fi
37
38# prepare config.makefile
39CFG=config.makefile
40rm -f $CFG
41
42TARSUF=""
43UNIT_TESTS=1
44DEBUG=0
45SANITIZE="all"
46DEVELOPER="JENKINS" # see ../UNIT_TESTER/README.txt@DEVEL_JENKINS
47
48case $MODE in
49  DEBUG)
50    DEBUG=1
51    TARSUF="-dbg"
52    ;;
53  NDEBUG)
54    TARSUF="-ndbg"
55    ;;
56  RELEASE)
57    DEVELOPER="RELEASE"
58    UNIT_TESTS=0
59    SANITIZE=0 # never sanitize release!
60    ;;
61  *)
62    echo "Error: unknown MODE '$MODE' passed to jenkins_build.sh"
63    false
64    ;;
65esac
66
67case $OSNAME in
68  Darwin)
69    echo "DARWIN := 1" >> $CFG
70    echo "MACH := DARWIN" >> $CFG
71    # OSX make causes random failures if called with '-j 2'
72    # (e.g. target 'binlink' gets triggered multiple times, causing build failure when it's executed concurrently)
73    JMAKE="make --print-directory"
74    ;;
75  Linux)
76    echo "LINUX := 1" >> $CFG
77    echo "MACH := LINUX" >> $CFG
78    JMAKE="/usr/bin/time --verbose make -j `util/usecores.pl`"
79    ;;
80  *)
81    echo "Error: unhandled OSNAME '$OSNAME'"
82    false
83    ;;
84esac
85
86if [ -z "${TGTNAME:-}" ]; then
87    echo "Error: unknown TGTNAME - build refused"
88    false
89fi
90   
91echo "DEBUG := $DEBUG" >> $CFG
92echo "UNIT_TESTS := $UNIT_TESTS" >> $CFG
93echo "OPENGL := 0" >> $CFG
94echo "DEVELOPER := $DEVELOPER" >> $CFG
95echo "DEBUG_GRAPHICS := 0" >> $CFG
96echo "PTPAN := 0" >> $CFG
97echo "ARB_64 := 1" >> $CFG
98echo "TRACESYM := 1" >> $CFG
99echo "SANITIZE := $SANITIZE" >> $CFG
100echo "COVERAGE := 0" >> $CFG
101# done with config.makefile
102
103# build, tar and test
104if [ "$ARG" == "fake_build" ]; then
105    echo "Faking build"
106    echo "Faked arb.tgz"     > arb.tgz
107    echo "Faked arb-dev.tgz" > arb-dev.tgz
108else
109    if [ "$ARG" == "from_tarball" ]; then
110        echo "Test clean before make (tarball build)"
111        ${JMAKE} clean
112    fi
113    if [ "$ARG" == "clean_before_make" ]; then
114        echo "Forcing clean before make"
115        ${JMAKE} clean
116    fi
117    ${JMAKE} build
118    ${JMAKE} tarfile_quick
119fi
120
121    # jenkins archieves all files matching "**/arb*.tgz"
122    # jenkins publishes     files matching "**/arb*.tgz", but not "**/arb*dev*.tgz,**/arb*bin*.tgz"
123
124if [ -n "${SVN_TAG:-}" ]; then
125        # tagged build
126    VERSION_ID=${SVN_TAG}${TARSUF}
127        # remove arb-prefixes (added below)
128    VERSION_ID="${VERSION_ID##arb[-_]}"
129else
130        # normal build
131    VERSION_ID=r${SVN_REVISION}${TARSUF}
132fi
133
134VERSION_ID=arb-${VERSION_ID}
135VERSION_ID_TARGET=${VERSION_ID}.${TGTNAME}
136
137if [ "$MODE" == "RELEASE" ]; then
138    if [ "${TGTNAME}" == "ubuntu1004-amd64" ]; then
139            # perform things needed only once (pack source, copy README + install script):
140            # 1. pack source (svn version of slave and master must match!)
141        if [ "$ARG" == "fake_build" ]; then
142            echo "Faked ${VERSION_ID}-source.tgz" > ${VERSION_ID}-source.tgz
143        else
144            if [ "$ARG" == "from_tarball" ]; then
145                echo "Note: build from tarball - do not attempt to create a tarball"
146            else
147                    # check resource usage:
148                ${JMAKE} check_res
149
150                    # save tarball:
151                ${JMAKE} save
152                    # archived and published on ftp:
153                cp --dereference arbsrc.tgz ${VERSION_ID}-source.tgz
154                rm arbsrc*.tgz
155            fi
156        fi
157            # 2. move extra files into folder 'toftp' - content is copied to release directory
158        mkdir toftp
159        cp -p arb_README.txt toftp
160        cp -p arb_install.sh toftp
161        ls -al toftp
162    fi
163
164        # archived and published on ftp:
165    mv arb.tgz ${VERSION_ID_TARGET}.tgz
166else
167        # only archived (needed by SINA):
168    mv arb.tgz ${VERSION_ID_TARGET}-bin.tgz
169fi
170    # only archived (needed by SINA):
171mv arb-dev.tgz ${VERSION_ID_TARGET}-dev.tgz
172
173${JMAKE} ut
174
175echo "-------------------- compiled-in version info:"
176(bin/arb_ntree --help || true)
177echo "-------------------- existing tarballs:"
178ls -al arb*.tgz
179echo "--------------------"
Note: See TracBrowser for help on using the repository browser.