source: tags/arb-6.0-rc1/util/jenkins_build.sh

Last change on this file was 11743, checked in by westram, 11 years ago
  • supports optional argument 'from_tarball' (→ skips 'make save')
File size: 4.0 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
37DEVELOPER="ANY"
38
39case $MODE in
40  DEBUG)
41    DEBUG=1
42    TARSUF="-dbg"
43    ;;
44  NDEBUG)
45    TARSUF="-ndbg"
46    ;;
47  RELEASE)
48    DEVELOPER="RELEASE"
49    UNIT_TESTS=0
50    ;;
51  *)
52    echo "Error: unknown MODE '$MODE' passed to jenkins_build.sh"
53    false
54    ;;
55esac
56
57case $OSNAME in
58  Darwin)
59    echo "DARWIN := 1" >> $CFG
60    echo "MACH := DARWIN" >> $CFG
61    UNIT_TESTS=0
62    ;;
63  Linux)
64    echo "LINUX := 1" >> $CFG
65    echo "MACH := LINUX" >> $CFG
66    ;;
67  *)
68    echo "Error: unhandled OSNAME '$OSNAME'"
69    false
70    ;;
71esac
72
73if [ -z "${TGTNAME:-}" ]; then
74    echo "Error: unknown TGTNAME - build refused"
75    false
76fi
77   
78echo "DEBUG := $DEBUG" >> $CFG
79echo "UNIT_TESTS := $UNIT_TESTS" >> $CFG
80echo "OPENGL := 0" >> $CFG
81echo "DEVELOPER := $DEVELOPER" >> $CFG
82echo "DEBUG_GRAPHICS := 0" >> $CFG
83echo "PTPAN := 0" >> $CFG
84echo "ARB_64 := 1" >> $CFG
85echo "TRACESYM := 1" >> $CFG
86echo "COVERAGE := 0" >> $CFG
87# done with config.makefile
88
89# skip build?
90BUILD=1
91if [ "$MODE" == "NDEBUG" -a $UNIT_TESTS == 0 ]; then
92    echo "Modes NDEBUG and RELEASE are identical for $OSNAME"
93    BUILD=0
94fi
95
96# build, tar and test
97if [ $BUILD == 1 ]; then
98    if [ "$ARG" == "fake_build" ]; then
99        echo "Faking build"
100        echo "Faked arb.tgz"     > arb.tgz
101        echo "Faked arb-dev.tgz" > arb-dev.tgz
102    else
103        make build
104        make tarfile_quick
105    fi
106
107    # jenkins archieves all files matching "**/arb*.tgz"
108    # jenkins publishes     files matching "**/arb*.tgz", but not "**/arb*dev*.tgz,**/arb*bin*.tgz"
109
110    if [ -n "${SVN_TAG:-}" ]; then
111        # tagged build
112        VERSION_ID=${SVN_TAG}${TARSUF}
113        # remove arb-prefixes (added below)
114        VERSION_ID="${VERSION_ID##arb[-_]}"
115    else
116        # normal build
117        VERSION_ID=r${SVN_REVISION}${TARSUF}
118    fi
119
120    VERSION_ID=arb-${VERSION_ID}
121    VERSION_ID_TARGET=${VERSION_ID}.${TGTNAME}
122
123    if [ "$MODE" == "RELEASE" ]; then
124        if [ "${TGTNAME}" == "ubuntu1004-amd64" ]; then
125            # perform things needed only once (pack source, copy README + install script):
126            # 1. pack source (svn version of slave and master must match!)
127            if [ "$ARG" == "fake_build" ]; then
128                echo "Faked ${VERSION_ID}-source.tgz" > ${VERSION_ID}-source.tgz
129            else
130                if [ "$ARG" == "from_tarball" ]; then
131                    echo "Note: build from tarball - do not attempt to create a tarball"
132                else
133                    make save
134                    # archived and published on ftp:
135                    cp --dereference arbsrc.tgz ${VERSION_ID}-source.tgz
136                    rm arbsrc*.tgz
137                fi
138            fi
139            # 2. move extra files into folder 'toftp' - content is copied to release directory
140            mkdir toftp
141            cp -p arb_README.txt toftp
142            cp -p arb_install.sh toftp
143            ls -al toftp
144        fi
145
146        # archived and published on ftp:
147        mv arb.tgz ${VERSION_ID_TARGET}.tgz
148    else
149        # only archived (needed by SINA):
150        mv arb.tgz ${VERSION_ID_TARGET}-bin.tgz
151    fi
152    # only archived (needed by SINA):
153    mv arb-dev.tgz ${VERSION_ID_TARGET}-dev.tgz
154
155    make ut
156
157    echo "-------------------- compiled-in version info:"
158    (bin/arb_ntree --help || true)
159    echo "-------------------- existing tarballs:"
160    ls -al arb*.tgz
161    echo "--------------------"
162else
163    echo "Skipping this build."
164    # @@@ maybe need to fake unit-test-result here
165fi
Note: See TracBrowser for help on using the repository browser.