source: branches/alilink/util/jenkins_build.sh

Last change on this file was 18126, checked in by westram, 5 years ago
File size: 4.7 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 "ARB_64 := 1" >> $CFG
97echo "TRACESYM := 1" >> $CFG
98echo "SANITIZE := $SANITIZE" >> $CFG
99echo "COVERAGE := 0" >> $CFG
100# done with config.makefile
101
102# build, tar and test
103if [ "$ARG" == "fake_build" ]; then
104    echo "Faking build"
105    echo "Faked arb.tgz"     > arb.tgz
106    echo "Faked arb-dev.tgz" > arb-dev.tgz
107else
108    if [ "$ARG" == "from_tarball" ]; then
109        echo "Test clean before make (tarball build)"
110        ${JMAKE} clean
111    fi
112    if [ "$ARG" == "clean_before_make" ]; then
113        echo "Forcing clean before make"
114        ${JMAKE} clean
115    fi
116    ${JMAKE} build
117    ${JMAKE} tarfile_quick
118fi
119
120# jenkins archieves all files matching "**/arb*.tgz"
121# jenkins publishes     files matching "**/arb*.tgz", but not "**/arb*dev*.tgz,**/arb*bin*.tgz"
122
123if [ -n "${SVN_TAG:-}" ]; then
124    # tagged build
125    VERSION_ID=${SVN_TAG}${TARSUF}
126    # remove arb-prefixes (added below)
127    VERSION_ID="${VERSION_ID##arb[-_]}"
128else
129    # normal build
130    VERSION_ID=r${SVN_REVISION}${TARSUF}
131fi
132
133VERSION_ID=arb-${VERSION_ID}
134VERSION_ID_TARGET=${VERSION_ID}.${TGTNAME}
135
136if [ "$MODE" == "RELEASE" ]; then
137    if [ "${TGTNAME}" == "ubuntu1004-amd64" ]; then
138        # perform things needed only once (pack source, copy README + install script):
139        # 1. pack source (svn version of slave and master must match!)
140        if [ "$ARG" == "fake_build" ]; then
141            echo "Faked ${VERSION_ID}-source.tgz" > ${VERSION_ID}-source.tgz
142        else
143            if [ "$ARG" == "from_tarball" ]; then
144                echo "Note: build from tarball - do not attempt to create a tarball"
145            else
146                # check resource usage:
147                ${JMAKE} check_res
148
149                # save tarball:
150                ${JMAKE} save
151                # archived and published on ftp:
152                cp --dereference arbsrc.tgz ${VERSION_ID}-source.tgz
153                rm arbsrc*.tgz
154            fi
155        fi
156        # 2. move extra files into folder 'toftp' - content is copied to release directory
157        mkdir toftp
158        cp -p arb_README.txt toftp
159        cp -p arb_install.sh toftp
160        ls -al toftp
161    fi
162
163    # archived and published on ftp:
164    mv arb.tgz ${VERSION_ID_TARGET}.tgz
165else
166    # only archived (needed by SINA):
167    mv arb.tgz ${VERSION_ID_TARGET}-bin.tgz
168fi
169# only archived (needed by SINA):
170mv arb-dev.tgz ${VERSION_ID_TARGET}-dev.tgz
171
172${JMAKE} ut
173
174echo "-------------------- compiled-in version info:"
175(bin/arb_ntree --help || true)
176
177echo "-------------------- cleanup relinkable binaries:"
178${JMAKE} cleanRelinkable || echo "cleanRelinkable failed (ignored)"
179
180echo "-------------------- existing tarballs:"
181ls -al arb*.tgz
182echo "--------------------"
Note: See TracBrowser for help on using the repository browser.