mirror of
https://github.com/FRRouting/frr.git
synced 2025-04-30 13:37:17 +02:00
build: add buildtest.sh script
This script compiles Quagga in a variety of configurations and optionally with LLVM and ICC (if those are installed). Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
This commit is contained in:
parent
ea05767770
commit
f6295c2907
92
buildtest.sh
Executable file
92
buildtest.sh
Executable file
|
@ -0,0 +1,92 @@
|
|||
#!/bin/bash
|
||||
# written 2012-2013 by David Lamparter, placed in Public Domain.
|
||||
#
|
||||
# builds some git commit of Quagga in some different configurations
|
||||
# usage: buildtest.sh [commit [configurations...]]
|
||||
|
||||
basecfg="--prefix=/usr --enable-user=quagga --enable-group=quagga --enable-vty-group=quagga --enable-configfile-mask=0660 --enable-logfile-mask=0640 --enable-vtysh --sysconfdir=/etc/quagga --enable-exampledir=/etc/quagga/samples --localstatedir=/var/run/quagga --libdir=/usr/lib64/quagga --enable-ipv6 --enable-ripngd --enable-ospf6d --enable-rtadv --disable-static --enable-isisd --enable-multipath=0 --enable-babeld"
|
||||
|
||||
configs_base="gcc|$basecfg"
|
||||
|
||||
configs_nov6="gcc|$basecfg"
|
||||
configs_nov6="${configs_nov6/enable-ipv6/disable-ipv6}"
|
||||
configs_nov6="${configs_nov6/enable-ospf6d/disable-ospf6d}"
|
||||
configs_nov6="${configs_nov6/enable-ripngd/disable-ripngd}"
|
||||
configs_nov6="${configs_nov6/enable-babeld/disable-babeld}"
|
||||
|
||||
configs_ext="gcc|$basecfg --enable-opaque-lsa --enable-ospf-te --enable-ospfclient --enable-isis-topology"
|
||||
configs_snmp="gcc|$basecfg --enable-opaque-lsa --enable-ospf-te --enable-ospfclient --enable-isis-topology --enable-snmp"
|
||||
configs_clang="clang|$basecfg --enable-opaque-lsa --enable-ospf-te --enable-ospfclient --enable-isis-topology"
|
||||
configs_icc="icc|$basecfg --enable-opaque-lsa --enable-ospf-te --enable-ospfclient --enable-isis-topology"
|
||||
|
||||
defconfigs="base nov6 ext"
|
||||
net-snmp-config --version &> /dev/null && defconfigs="$defconfigs snmp"
|
||||
clang --version &> /dev/null && defconfigs="$defconfigs clang"
|
||||
icc --version &> /dev/null && defconfigs="$defconfigs icc"
|
||||
|
||||
echo "enabled configurations: $defconfigs"
|
||||
|
||||
cc_gcc="CC=gcc; export CC"
|
||||
cc_clang="CC=clang; export CC"
|
||||
cc_icc="CC=icc; export CC"
|
||||
|
||||
###############################
|
||||
|
||||
errfunc() {
|
||||
echo "something went wrong! check $TEMP"
|
||||
exit 1
|
||||
}
|
||||
|
||||
set -e
|
||||
trap errfunc ERR
|
||||
|
||||
COMMITREF="$1"
|
||||
COMMITISH="`git rev-list --max-count=1 ${COMMITREF:-HEAD}`"
|
||||
TEMP="`mktemp -t -d quaggabuild.XXXXXX`"
|
||||
BASE="`pwd`"
|
||||
CONFIGS="$2"
|
||||
|
||||
echo using temporary directory: $TEMP
|
||||
echo git commit used:
|
||||
git --no-pager log -n 1 --pretty=oneline "$COMMITISH"
|
||||
|
||||
cd "$TEMP"
|
||||
git clone "$BASE" "source"
|
||||
cd "source"
|
||||
git checkout -b build "$COMMITISH"
|
||||
git clean -d -f -x
|
||||
sh bootstrap.sh
|
||||
|
||||
cd ..
|
||||
|
||||
echo -e "\n\n\n\n\033[33;1mmaking dist tarball\033[m"
|
||||
|
||||
mkdir build_dist
|
||||
cd build_dist
|
||||
../source/configure
|
||||
make distdir=sdist dist-gzip
|
||||
cd ..
|
||||
tar zxvf build_dist/sdist.tar.gz
|
||||
|
||||
for cfg in ${CONFIGS:-$defconfigs}; do
|
||||
echo -e "\n\n\n\n\033[33;1mbuilding configuration $cfg\033[m"
|
||||
config="\${configs_$cfg}"
|
||||
eval "config=$config"
|
||||
|
||||
cc="${config%%|*}"
|
||||
args="${config#*|}"
|
||||
|
||||
ccset="\${cc_$cc}"
|
||||
eval "ccset=$ccset"
|
||||
eval "$ccset"
|
||||
|
||||
bdir="build_$cfg"
|
||||
mkdir "$bdir"
|
||||
cd "$bdir"
|
||||
../sdist/configure $args
|
||||
make -j5
|
||||
make DESTDIR="$TEMP/inst_$cfg" install
|
||||
cd ..
|
||||
done
|
||||
|
||||
echo -e "\n\n\n\neverything seems ok. you may now\n\trm -rf $TEMP"
|
Loading…
Reference in a new issue