source: scripts/locker-build @ 8789410

release-1.5release-1.6release-1.7release-1.8release-1.9
Last change on this file since 8789410 was 2b6622a6, checked in by Nelson Elhage <nelhage@mit.edu>, 12 years ago
locker-build: Use -R instead of -Wl,-R on Solaris. On Athena 9 Solaris, `krb5-config --libs` includes `-R/usr/athena/lib`. Paths passed with -R end up taking precedence over those passed with -Wl,-R, and so barnowl ends up using the glib out of /usr/athena/lib unless we specify the barnowl library dir using -R as well. Unfortunately, gcc elsewhere does not understand -R, so conditionalize on the uname. Signed-off-by: Nelson Elhage <nelhage@mit.edu>
  • Property mode set to 100755
File size: 2.8 KB
Line 
1#!/bin/bash
2
3#########################################################
4# Build script to build BarnOwl for the locker.
5
6# Usage: locker-build [-n] [-o OUTPUT-TGZ] SOURCE-TARBALL
7# -n is a dry-run, and drops to a shell in the build directory
8# -o does the install into a temporary directory and tars it into the
9#    specified tarball instead.
10# SOURCE-TARBALL is a source tarball, created by do-release
11
12die() {
13    echo "$@" 2>&1;
14    if [ -n "$TMPDIR" ]; then
15        if [ -n "$DRYRUN" ]; then
16            echo "Dropping to a shell to investigate...";
17            $SHELL
18        fi
19    fi
20    exit 1;
21}
22
23usage () {
24    echo "Usage: $0 [-n] [-o OUTPUT-TGZ] SOURCE-TARBALL"
25    exit 2;
26}
27
28exittrap() { :; }
29for sig in 1 2 13 15; do trap "exit $(($sig + 128))" $sig; done
30trap 'exittrap' EXIT
31
32SRC_TGZ=
33OUT_TGZ=
34DRYRUN=
35
36set -- `getopt no: "$@"`
37[ $? -eq 0 ] || usage
38
39for opt
40do
41    case "$opt" in
42        -n)
43            DRYRUN=1; shift ;;
44        -o)
45            OUT_TGZ="$2"; shift 2;;
46        --)
47            shift; break ;;
48    esac
49done
50
51SRC_TGZ="$1"
52
53test -z "$SRC_TGZ"  && usage
54
55
56ATHENA_SYS="${ATHENA_SYS:-$(machtype -S)}"
57
58if [ "$(uname)" = "SunOS" ]; then
59    MAKE=gmake
60    TAR=gtar
61else
62    MAKE=make
63    TAR=tar
64fi
65
66attach barnowl
67aklog
68
69TMPDIR=$(mktemp -d /tmp/barnowl-build-XXXXXX) || die "Unable to mktemp"
70
71exittrap() { rm -rf "$TMPDIR"; }
72
73$TAR -C "$TMPDIR" -xzf "$SRC_TGZ" || die "Unable to untar"
74
75(
76    cd "$TMPDIR"/* || die "Unable to cd to $TMPDIR"
77    VERS=$(perl -ne 'print $1 if m{^AC_INIT\(\[[^\]]+\],\s*\[([^\]]+)\]}' configure.ac)
78    test -z "$VERS" && die "Unable to detect barnowl version."
79
80    echo "Building BarnOwl version $VERS"
81
82    opt_rpath="-Wl,-R"
83    [ $(uname) = "SunOS" ] && opt_rpath="-R"
84
85    BARNOWL="/afs/sipb.mit.edu/project/barnowl/arch/$ATHENA_SYS"
86    export PKG_CONFIG_PATH="$BARNOWL/lib/pkgconfig"
87
88    CFLAGS="-I$BARNOWL/include" \
89        LDFLAGS="-L$BARNOWL/lib $opt_rpath$BARNOWL/lib" \
90        ./configure --exec-prefix="/mit/barnowl/arch/$ATHENA_SYS" \
91        --prefix="/mit/barnowl/builds/barnowl-$VERS" --mandir=/mit/barnowl/man \
92        --program-suffix="-$VERS" \
93        --with-zephyr --without-stack-protector \
94        || die "configure failed"
95
96    $MAKE clean  || die "make clean failed"
97
98    CPUS=$(athinfo localhost cpuspeed | grep -c MHz)
99    if [ "$CPUS" = 0 ]; then
100        CPUS=1
101    fi
102
103    $MAKE -j$CPUS all || die "make failed"
104
105    if [ -n "$DRYRUN" ]; then
106        echo "Build completed; Dropping to a shell..."
107        $SHELL
108    else
109        if [ -n "$OUT_TGZ" ]; then
110            mkdir tgz
111            $MAKE DESTDIR=tgz install || die "Install failed"
112        else
113            $MAKE install || die "Install failed"
114        fi
115    fi
116)
117
118if [ "$?" -ne 0 ]; then
119    exit "$?"
120fi
121
122if [ -n "$OUT_TGZ" ]; then
123    $TAR -C "$TMPDIR/"*/tgz -czvf "$OUT_TGZ" . || die "Make tarball failed"
124fi
125
126rm -rf "$TMPDIR"
127exittrap() { :; }
Note: See TracBrowser for help on using the repository browser.