test: Update travis build to include a basic klippy host test

Move the travis installation steps from the travis-build.sh script to
a new script (scripts/travis-install.sh).  Move the travis-build.sh
script to the scripts/ directory as well.

The data dictionaries built in the compile tests are useful during
host software testing, so run all the compile tests sequentially in a
single VM and save the data dictionaries after each build.  Also,
build all the config files found in the test/configs/ directory.

Create the python virtualenv environment during the install phase and
invoke the klippy.py host software in the build phase to perform a
basic host software sanity check.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
Kevin O'Connor 2018-02-26 14:20:11 -05:00
parent 5d635c5252
commit 28d70eaf0c
5 changed files with 76 additions and 47 deletions

View File

@ -1,20 +1,13 @@
# This is a travis-ci.org continuous integration configuration file.
language: c language: c
addons: addons:
apt: apt:
sourceline: 'ppa:team-gcc-arm-embedded/ppa'
packages: packages:
- gcc-avr - gcc-avr
- avr-libc - avr-libc
- wget - wget
env: install: ./scripts/travis-install.sh
- TARGET=atmega2560-16mhz
- TARGET=atmega328-16mhz
# - TARGET=beaglebone needs pru-gcc (not out of the box available on Ubuntu)
- TARGET=hostsimulator
- TARGET=linuxprocess
- TARGET=sam3x8e GCC_SRC=https://developer.arm.com/-/media/Files/downloads/gnu-rm/7-2017q4/gcc-arm-none-eabi-7-2017-q4-major-linux.tar.bz2 GCC_DIR=gcc-arm-none-eabi-7-2017-q4-major
script: ./test/travis-build.sh
script: ./scripts/travis-build.sh

40
scripts/travis-build.sh Executable file
View File

@ -0,0 +1,40 @@
#!/bin/bash
# Test script for travis-ci.org continuous integration.
# Stop script early on any error; check variables; be verbose
set -eux
# Paths to tools installed by travis-install.sh
export PATH=${PWD}/gcc-arm-none-eabi-7-2017-q4-major/bin:${PATH}
PYTHON=${PWD}/python-env/bin/python
######################################################################
# Run compile tests for several different MCU types
######################################################################
DICTDIR=${PWD}/dict
mkdir -p ${DICTDIR}
for TARGET in test/configs/*.config ; do
echo "=============== Test compile $TARGET"
make clean
make distclean
unset CC
cp ${TARGET} .config
make olddefconfig
make V=1
cp out/klipper.dict ${DICTDIR}/$(basename ${TARGET} .config).dict
done
######################################################################
# Verify klippy host software
######################################################################
HOSTDIR=${PWD}/hosttest
mkdir -p ${HOSTDIR}
echo "=============== Test invoke klippy"
$PYTHON klippy/klippy.py config/example.cfg -i /dev/null -o ${HOSTDIR}/output -v -d ${DICTDIR}/atmega2560-16mhz.dict
$PYTHON klippy/parsedump.py ${DICTDIR}/atmega2560-16mhz.dict ${HOSTDIR}/output > ${HOSTDIR}/output-parsed

33
scripts/travis-install.sh Executable file
View File

@ -0,0 +1,33 @@
#!/bin/bash
# Build setup script for travis-ci.org continuous integration testing.
# See travis-build.sh for the actual test steps.
# Stop script early on any error; check variables; be verbose
set -eux
######################################################################
# Install embedded arm gcc
######################################################################
echo "=============== Install embedded arm gcc"
GCC_ARM_URL="https://developer.arm.com/-/media/Files/downloads/gnu-rm/7-2017q4/gcc-arm-none-eabi-7-2017-q4-major-linux.tar.bz2"
GCC_ARM_SHA="96a029e2ae130a1210eaa69e309ea40463028eab18ba19c1086e4c2dafe69a6a gcc-arm-none-eabi-7-2017-q4-major-linux.tar.bz2"
GCC_ARM_FILE="$(basename ${GCC_ARM_URL})"
wget "$GCC_ARM_URL"
FOUND_SHA=`sha256sum "$GCC_ARM_FILE"`
if [ "$FOUND_SHA" != "$GCC_ARM_SHA" ]; then
echo "ERROR: Mismatch on gcc arm sha256"
exit -1
fi
tar xf "$GCC_ARM_FILE"
######################################################################
# Create python virtualenv environment
######################################################################
echo "=============== Install python virtualenv"
virtualenv python-env
./python-env/bin/pip install cffi==1.6.0 pyserial==3.2.1 greenlet==0.4.10

View File

@ -1,2 +0,0 @@
# Base config file for beaglebone
CONFIG_MACH_PRU=y

View File

@ -1,35 +0,0 @@
#!/bin/bash
set -eux
if [ -z ${TARGET+x} ]; then
if [ -z ${1+x} ]; then
echo "Need a TARGET as environment variable or first parameter!"
exit 1
else
TARGET="$1"
fi
fi
echo "Target is '$TARGET'"
make clean
make distclean
unset CC
cp test/configs/${TARGET}.config .config
make olddefconfig
if [ ! -z ${GCC_SRC+x} ]; then
if [ -z ${GCC_DIR+x} ]; then
echo "Need a GCC_DIR together with GCC_SRC!"
exit 1
fi
if [ -e "$GCC_DIR" ]; then
echo "Reusing GCC in '$GCC_DIR'"
else
echo "Getting GCC from '$GCC_SRC'"
wget "$GCC_SRC"
echo "Unpacking GCC to '$GCC_DIR'"
tar xf $(basename "$GCC_SRC")
fi
export PATH=$GCC_DIR/bin:$PATH
fi
make V=1