source: tags/ms_r16q2/util/jenkins_build.sh

Last change on this file was 14315, checked in by westram, 9 years ago
  • attempt to get rid of perl-locale-spam in build-logs
File size: 4.8 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=1
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    UNIT_TESTS=0
72    # OSX make causes random failures if called with '-j 2'
73    # (e.g. target 'binlink' gets triggered multiple times, causing build failure when it's executed concurrently)
74    JMAKE=make
75    ;;
76  Linux)
77    echo "LINUX := 1" >> $CFG
78    echo "MACH := LINUX" >> $CFG
79    JMAKE="/usr/bin/time --verbose make -j `util/usecores.pl`"
80    ;;
81  *)
82    echo "Error: unhandled OSNAME '$OSNAME'"
83    false
84    ;;
85esac
86
87if [ -z "${TGTNAME:-}" ]; then
88    echo "Error: unknown TGTNAME - build refused"
89    false
90fi
91   
92echo "DEBUG := $DEBUG" >> $CFG
93echo "UNIT_TESTS := $UNIT_TESTS" >> $CFG
94echo "OPENGL := 0" >> $CFG
95echo "DEVELOPER := $DEVELOPER" >> $CFG
96echo "DEBUG_GRAPHICS := 0" >> $CFG
97echo "PTPAN := 0" >> $CFG
98echo "ARB_64 := 1" >> $CFG
99echo "TRACESYM := 1" >> $CFG
100echo "SANITIZE := $SANITIZE" >> $CFG
101echo "COVERAGE := 0" >> $CFG
102# done with config.makefile
103
104# skip build?
105BUILD=1
106if [ "$MODE" == "NDEBUG" -a $UNIT_TESTS == 0 ]; then
107    echo "Modes NDEBUG and RELEASE are identical for $OSNAME"
108    BUILD=0
109fi
110
111# build, tar and test
112if [ $BUILD == 1 ]; then
113    # JMAKE="make"
114    if [ "$ARG" == "fake_build" ]; then
115        echo "Faking build"
116        echo "Faked arb.tgz"     > arb.tgz
117        echo "Faked arb-dev.tgz" > arb-dev.tgz
118    else
119        if [ "$ARG" == "from_tarball" ]; then
120            echo "Test clean before make (tarball build)"
121            ${JMAKE} clean
122        fi
123        ${JMAKE} build
124        ${JMAKE} tarfile_quick
125    fi
126
127    # jenkins archieves all files matching "**/arb*.tgz"
128    # jenkins publishes     files matching "**/arb*.tgz", but not "**/arb*dev*.tgz,**/arb*bin*.tgz"
129
130    if [ -n "${SVN_TAG:-}" ]; then
131        # tagged build
132        VERSION_ID=${SVN_TAG}${TARSUF}
133        # remove arb-prefixes (added below)
134        VERSION_ID="${VERSION_ID##arb[-_]}"
135    else
136        # normal build
137        VERSION_ID=r${SVN_REVISION}${TARSUF}
138    fi
139
140    VERSION_ID=arb-${VERSION_ID}
141    VERSION_ID_TARGET=${VERSION_ID}.${TGTNAME}
142
143    if [ "$MODE" == "RELEASE" ]; then
144        if [ "${TGTNAME}" == "ubuntu1004-amd64" ]; then
145            # perform things needed only once (pack source, copy README + install script):
146            # 1. pack source (svn version of slave and master must match!)
147            if [ "$ARG" == "fake_build" ]; then
148                echo "Faked ${VERSION_ID}-source.tgz" > ${VERSION_ID}-source.tgz
149            else
150                if [ "$ARG" == "from_tarball" ]; then
151                    echo "Note: build from tarball - do not attempt to create a tarball"
152                else
153                    # check resource usage:
154                    ${JMAKE} check_res
155
156                    # save tarball:
157                    ${JMAKE} save
158                    # archived and published on ftp:
159                    cp --dereference arbsrc.tgz ${VERSION_ID}-source.tgz
160                    rm arbsrc*.tgz
161                fi
162            fi
163            # 2. move extra files into folder 'toftp' - content is copied to release directory
164            mkdir toftp
165            cp -p arb_README.txt toftp
166            cp -p arb_install.sh toftp
167            ls -al toftp
168        fi
169
170        # archived and published on ftp:
171        mv arb.tgz ${VERSION_ID_TARGET}.tgz
172    else
173        # only archived (needed by SINA):
174        mv arb.tgz ${VERSION_ID_TARGET}-bin.tgz
175    fi
176    # only archived (needed by SINA):
177    mv arb-dev.tgz ${VERSION_ID_TARGET}-dev.tgz
178
179    ${JMAKE} ut
180
181    echo "-------------------- compiled-in version info:"
182    (bin/arb_ntree --help || true)
183    echo "-------------------- existing tarballs:"
184    ls -al arb*.tgz
185    echo "--------------------"
186else
187    echo "Skipping this build."
188    # @@@ maybe need to fake unit-test-result here
189fi
Note: See TracBrowser for help on using the repository browser.