Add Mynewt target builds to CI
Adds scripts to build and test many Mynewt project configurations; this
avoids breaking builds after changes are not tested for some particular
configuration option.
Signed-off-by: Fabio Utzig <utzig@apache.org>
diff --git a/.travis.yml b/.travis.yml
index 3e2e839..8f6a84a 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -2,7 +2,10 @@
language: rust
-cache: cargo
+cache:
+ directories:
+ - $HOME/TOOLCHAIN
+ - cargo
matrix:
include:
@@ -36,6 +39,12 @@
#- os: linux
# env: MULTI_FEATURES="sig-rsa validate-slot0 overwrite-only"
+ - os: linux
+ language: go
+ env: TEST=mynewt
+ go:
+ - "1.10"
+
before_install:
- |
if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then
diff --git a/ci/mynewt_install.sh b/ci/mynewt_install.sh
new file mode 100755
index 0000000..abadfb3
--- /dev/null
+++ b/ci/mynewt_install.sh
@@ -0,0 +1,65 @@
+#!/bin/bash -x
+
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+install_newt() {
+ pushd $HOME
+ git clone --depth=1 https://github.com/apache/mynewt-newt
+ [[ $? -ne 0 ]] && exit 1
+
+ pushd mynewt-newt && ./build.sh
+ [[ $? -ne 0 ]] && exit 1
+
+ cp newt/newt $HOME/bin
+ popd
+ popd
+}
+
+shallow_clone_mynewt() {
+ mkdir -p repos/apache-mynewt-core
+ git clone --depth=1 https://github.com/apache/mynewt-core repos/apache-mynewt-core
+ [[ $? -ne 0 ]] && exit 1
+}
+
+arm_toolchain_install() {
+ TOOLCHAIN_PATH=$HOME/TOOLCHAIN
+
+ GCC_URL=https://developer.arm.com/-/media/Files/downloads/gnu-rm/7-2017q4/gcc-arm-none-eabi-7-2017-q4-major-linux.tar.bz2
+ GCC_BASE=gcc-arm-none-eabi-7-2017-q4-major
+
+ mkdir -p $TOOLCHAIN_PATH
+
+ if [ ! -s ${TOOLCHAIN_PATH}/$GCC_BASE/bin/arm-none-eabi-gcc ]; then
+ wget -O ${TOOLCHAIN_PATH}/${GCC_BASE}.tar.bz2 $GCC_URL
+ [[ $? -ne 0 ]] && exit 1
+
+ tar xfj ${TOOLCHAIN_PATH}/${GCC_BASE}.tar.bz2 -C $TOOLCHAIN_PATH
+ fi
+
+ for i in ${TOOLCHAIN_PATH}/${GCC_BASE}/bin/arm-none-eabi-* ; do
+ rm -f $HOME/bin/${i##*/}
+ ln -s $i $HOME/bin/${i##*/}
+ done
+}
+
+mkdir -p $HOME/bin
+export PATH=$HOME/bin:$PATH
+
+install_newt
+shallow_clone_mynewt
+arm_toolchain_install
diff --git a/ci/mynewt_run.sh b/ci/mynewt_run.sh
new file mode 100755
index 0000000..f944f62
--- /dev/null
+++ b/ci/mynewt_run.sh
@@ -0,0 +1,31 @@
+#!/bin/bash -x
+
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+export PATH=$HOME/bin:$PATH
+pwd
+
+ln -s ci/mynewt_targets targets
+ln -s ci/mynewt_keys keys
+
+for target in $(ls targets); do
+ newt build $target
+ [[ $? -ne 0 ]] && exit 1
+done
+
+exit 0