blob: f4e087e5608dffbb9a3bafef7cbb5c69a6af944c [file] [log] [blame]
#!/bin/sh
#
# Copyright (c) 2017, The OpenThread Authors.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# 3. Neither the name of the copyright holder nor the
# names of its contributors may be used to endorse or promote products
# derived from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
set -e
set -x
TOOLS_HOME=$HOME/.cache/tools
die() {
echo " *** ERROR: " $*
exit 1
}
case $BUILD_TARGET in
android-check)
(cd .. && "${TRAVIS_BUILD_DIR}/.travis/android_check")
;;
pretty-check)
export PATH=$TOOLS_HOME/usr/bin:$PATH || die
./bootstrap || die
./configure && make pretty-check || die
;;
posix-check)
export CPPFLAGS="$CFLAGS -I$TOOLS_HOME/usr/include"
export LDFLAGS="$LDFLAGS -L$TOOLS_HOME/usr/lib"
./bootstrap
./configure
distcleancheck_listfiles="find . -type f \\( -name '*.gcda' -o -name '*.gcno' \\) -exec mv '{}' '$(pwd)/{}' \\;;find . -type f"
if [ "$WITH_MDNS" = 'mDNSResponder' ]; then
sudo service avahi-daemon stop
sudo mdnsd
make distcheck DISTCHECK_CONFIGURE_FLAGS='--enable-coverage --with-mdns=mDNSResponder' distcleancheck_listfiles="${distcleancheck_listfiles}"
else
make distcheck DISTCHECK_CONFIGURE_FLAGS='--enable-coverage' distcleancheck_listfiles="${distcleancheck_listfiles}"
fi
;;
scan-build)
SCAN_TMPDIR=./scan-tmp
./bootstrap || die
scan-build ./configure --disable-docs || die
scan-build -o $SCAN_TMPDIR -analyze-headers -v make || die
grep '^<!-- BUGFILE '$TRAVIS_BUILD_DIR $SCAN_TMPDIR/*/report-*.html | tee bugfiles
[ `< bugfiles grep -v 'third_party' | wc -l` = '0' ] || die
;;
script-check)
RELEASE=1 ./script/bootstrap || die 'Failed to bootstrap for release!'
./script/bootstrap || die 'Failed to bootstrap for development!'
NAT64=1 ./script/setup || die 'Failed to setup!'
SOCAT_OUTPUT=/tmp/ot-socat
socat -d -d pty,raw,echo=0 pty,raw,echo=0 > /dev/null 2> $SOCAT_OUTPUT &
while true; do
if test $(head -n2 $SOCAT_OUTPUT | wc -l) = 2; then
DEVICE_PTY=$(head -n1 $SOCAT_OUTPUT | grep -o '/dev/.\+')
WPANTUND_PTY=$(head -n2 $SOCAT_OUTPUT | tail -n1 | grep -o '/dev/.\+')
break
fi
echo 'Waiting for socat ready...'
sleep 1
done
echo 'DEVICE_PTY' $DEVICE_PTY
echo 'WPANTUND_PTY' $WPANTUND_PTY
# default configuration for Thread device is /dev/ttyUSB0
sudo ln -s $WPANTUND_PTY /dev/ttyUSB0 || die 'Failed to create ttyUSB0!'
ot-ncp-ftd 1 > $DEVICE_PTY < $DEVICE_PTY &
./script/console & SERVICES_PID=$!
sudo service tayga start
echo 'Waiting for services to be ready...'
sleep 10
netstat -an | grep 49191 || die 'Service otbr-agent not ready!'
netstat -an | grep 80 || die 'Service otbr-web not ready!'
pidof tayga || die 'tayga not running'
kill $SERVICES_PID || die 'Failed to stop services!'
sudo killall otbr-web || true
sudo killall otbr-agent || true
sudo killall wpantund || true
sudo service tayga stop || true
killall ot-ncp-ftd || die 'Failed to end OpenThread!'
killall socat || die 'Failed to end socat!'
jobs
echo 'Waiting for services to end...'
wait
;;
raspbian-gcc)
IMAGE_FILE=$IMAGE_NAME.img
STAGE_DIR=/tmp/raspbian
IMAGE_DIR=/media/rpi
[ -d $STAGE_DIR ] || mkdir -p $STAGE_DIR
cp -v $TOOLS_HOME/images/$IMAGE_FILE $STAGE_DIR/raspbian.img || die
git archive -o $STAGE_DIR/repo.tar HEAD || die
cat > $STAGE_DIR/check.sh <<EOF
export LC_ALL=C
export DEBIAN_FRONTEND=noninteractive
export RELEASE=1
echo "127.0.0.1 \$(hostname)" >> /etc/hosts
mount -t proc none /proc
mount -t sysfs none /sys
chown -R pi:pi /home/pi/repo
cd /home/pi/repo
apt-get update
apt-get install -y git
su -m -c 'git config --global pack.threads 1' pi
su -m -c 'script/bootstrap' pi
su -m -c './configure --prefix=/usr' pi
su -m -c 'make' pi
EOF
(cd docker-rpi-emu/scripts &&
sudo mkdir -p $IMAGE_DIR && \
sudo ./mount.sh $STAGE_DIR/raspbian.img $IMAGE_DIR && \
sudo mount --bind /dev/pts $IMAGE_DIR/dev/pts && \
sudo mkdir -p $IMAGE_DIR/home/pi/repo && \
sudo tar xvf $STAGE_DIR/repo.tar -C $IMAGE_DIR/home/pi/repo && \
sudo git clone --depth 1 https://github.com/openthread/wpantund.git $IMAGE_DIR/home/pi/repo/._build/wpantund && \
sudo cp -v $STAGE_DIR/check.sh $IMAGE_DIR/home/pi/check.sh && \
sudo ./qemu-setup.sh $IMAGE_DIR && \
sudo chroot $IMAGE_DIR /bin/bash /home/pi/check.sh && \
sudo ./qemu-cleanup.sh $IMAGE_DIR && \
sudo ./unmount.sh $IMAGE_DIR) || die
;;
*)
die
;;
esac