]>
Commit | Line | Data |
---|---|---|
f6295c29 | 1 | #!/bin/bash |
47a3a827 | 2 | # SPDX-License-Identifier: NONE |
f6295c29 DL |
3 | # written 2012-2013 by David Lamparter, placed in Public Domain. |
4 | # | |
1689cf7e | 5 | # builds some git commit of FRR in some different configurations |
f6295c29 DL |
6 | # usage: buildtest.sh [commit [configurations...]] |
7 | ||
2ee5fdba | 8 | basecfg="--prefix=/usr --enable-user=frr --enable-group=frr --enable-vty-group=frr --enable-configfile-mask=0660 --enable-logfile-mask=0640 --enable-vtysh --sysconfdir=/etc/frr --localstatedir=/var/run/frr --libdir=/usr/lib64/frr --enable-rtadv --disable-static --enable-isisd --enable-multipath=0 --enable-pimd --enable-werror" |
f6295c29 DL |
9 | |
10 | configs_base="gcc|$basecfg" | |
11 | ||
f6295c29 DL |
12 | configs_ext="gcc|$basecfg --enable-opaque-lsa --enable-ospf-te --enable-ospfclient --enable-isis-topology" |
13 | configs_snmp="gcc|$basecfg --enable-opaque-lsa --enable-ospf-te --enable-ospfclient --enable-isis-topology --enable-snmp" | |
14 | configs_clang="clang|$basecfg --enable-opaque-lsa --enable-ospf-te --enable-ospfclient --enable-isis-topology" | |
15 | configs_icc="icc|$basecfg --enable-opaque-lsa --enable-ospf-te --enable-ospfclient --enable-isis-topology" | |
16 | ||
80ec006d | 17 | defconfigs="base ext" |
f6295c29 DL |
18 | net-snmp-config --version &> /dev/null && defconfigs="$defconfigs snmp" |
19 | clang --version &> /dev/null && defconfigs="$defconfigs clang" | |
20 | icc --version &> /dev/null && defconfigs="$defconfigs icc" | |
21 | ||
22 | echo "enabled configurations: $defconfigs" | |
23 | ||
24 | cc_gcc="CC=gcc; export CC" | |
25 | cc_clang="CC=clang; export CC" | |
26 | cc_icc="CC=icc; export CC" | |
27 | ||
28 | ############################### | |
29 | ||
30 | errfunc() { | |
31 | echo "something went wrong! check $TEMP" | |
32 | exit 1 | |
33 | } | |
34 | ||
35 | set -e | |
36 | trap errfunc ERR | |
37 | ||
38 | COMMITREF="$1" | |
39 | COMMITISH="`git rev-list --max-count=1 ${COMMITREF:-HEAD}`" | |
555d1e3a | 40 | TEMP="`mktemp -t -d frrbuild.XXXXXX`" |
f6295c29 DL |
41 | BASE="`pwd`" |
42 | CONFIGS="$2" | |
43 | ||
44 | echo using temporary directory: $TEMP | |
45 | echo git commit used: | |
46 | git --no-pager log -n 1 --pretty=oneline "$COMMITISH" | |
47 | ||
48 | cd "$TEMP" | |
49 | git clone "$BASE" "source" | |
50 | cd "source" | |
51 | git checkout -b build "$COMMITISH" | |
52 | git clean -d -f -x | |
53 | sh bootstrap.sh | |
54 | ||
55 | cd .. | |
56 | ||
57 | echo -e "\n\n\n\n\033[33;1mmaking dist tarball\033[m" | |
58 | ||
59 | mkdir build_dist | |
60 | cd build_dist | |
61 | ../source/configure | |
62 | make distdir=sdist dist-gzip | |
63 | cd .. | |
64 | tar zxvf build_dist/sdist.tar.gz | |
65 | ||
66 | for cfg in ${CONFIGS:-$defconfigs}; do | |
67 | echo -e "\n\n\n\n\033[33;1mbuilding configuration $cfg\033[m" | |
68 | config="\${configs_$cfg}" | |
69 | eval "config=$config" | |
70 | ||
71 | cc="${config%%|*}" | |
72 | args="${config#*|}" | |
73 | ||
74 | ccset="\${cc_$cc}" | |
75 | eval "ccset=$ccset" | |
76 | eval "$ccset" | |
77 | ||
78 | bdir="build_$cfg" | |
79 | mkdir "$bdir" | |
80 | cd "$bdir" | |
81 | ../sdist/configure $args | |
82 | make -j5 | |
f281ab97 | 83 | make check |
f6295c29 DL |
84 | make DESTDIR="$TEMP/inst_$cfg" install |
85 | cd .. | |
86 | done | |
87 | ||
88 | echo -e "\n\n\n\neverything seems ok. you may now\n\trm -rf $TEMP" |