Browse Source

Improve travis cfg for rpi

master
Krisjanis Rijnieks 7 years ago
parent
commit
3de9b57eaa
  1. 86
      .travis.yml
  2. 79
      scripts/ci/rpi/mkimage.sh
  3. 0
      scripts/ci/rpi/pisetup.sh

86
.travis.yml

@ -1,27 +1,12 @@
# This file allows testing your addon using travis CI servers to use it you'll need to
# create an account in travis.org and enable your addon there.
#
# By default it will test linux 64bit and osx against the master and stable OF branches.
# Other platforms can be enabled by uncommenting the corresponding sections.
#
# If any extra install is needed to use the addon it can be included in the corresponding
# install script in:
#
# scripts/ci/$TARGET/install.sh
#
language: c++
compiler: gcc
sudo: true
matrix:
include:
# fully specify builds, include can't dynamically expand matrix entries
# relative order of sudo and env is important so that addons: is recognized
- os: linux
dist: trusty
sudo: required
env: TARGET="rpi"
env: TARGET="rpi" SCRIPT="pisetup.sh" IMAGE="opm-${TRAVIS_TAG}.img" RPI_ZIP="raspbian_lite-2017-07-05-of_v0.9.8.img.zip" RPI_URL="https://github.com/kr15h/openframeworks-rpi-image/releases/download/v1.0.0/${RPI_ZIP}"
addons:
apt:
packages:
@ -34,8 +19,17 @@ matrix:
- zip
script:
- sudo bash ./scripts/ci/rpi/mkimage.sh
- zip ${IMAGE}.zip ${IMAGE}
deploy:
provider: releases
api_key:
secure: Z1+IhOaCxrlKGqO3sw2Mz4gD7XaFykI+YA559V+FvynxHilu04jQtnGWUReTr2eHFFzZDzC80Ydk+ORDEIFEtA3VsM/BFJRm9jqtxcY+wtKmXLbh4k6fdgjKFH2QNOScoPj3acuuzV/5/RBXN+avLH53xx8uZkMNPPRpAyVvtZjZ0OSi1nEL5qg/Vnu+RhUM4ISy8r5JMcDghtFTo9hmy3sTPOSS9OSndi/guOgFHBo4x2mVtOKkIa2H/aKf1QR9h+KUK8CG/SYYSMf8gLZ/TZq9LO6wqaBPgqd2DZVPZvxCZ4JmUc7ZlnpBX2zo/WjUXKJyn3dqA/4sr8A74DqbNsZc6Xw4/DEeDGszmX5rudlp07kSXQudUgKILu72SLKMsMmmZ7FBjVS5k6ON7Euo8LlFGjAJhDkMDfzkUY86YkEAPZcerhvxqI4DdfAEhv36g+R2njdbJWjh1t5cHlG2IzJ9Hs4E5EhoY3iSOJoxTK44Q2wlTfFgtVzPv1QnGGDIWfKArlgPQWk0QsYgVoXzTRzAHhbkY/FsfagRG3wmq5BUb5bzR5bgzE/HI3wdqBfg6FwshHD+Y7S9YIPpEIzUCaP61bde2khSUSyWwt/lDMdvHKzwsf+gXyUWfNEivkdZhbZi+q0UlYdsQPEor+o7X5Sp3SrSe6hkcNltroGC65c=
file:
- "${IMAGE}.zip"
skip_cleanup: true
on:
tags: true
# Linux 64bit, OF master
- os: linux
dist: trusty
sudo: required
@ -43,50 +37,32 @@ matrix:
addons:
apt:
sources:
- ubuntu-toolchain-r-test
- ubuntu-toolchain-r-test
packages:
- gcc-4.9
- g++-4.9
- gdb
# OSX, OF master
- gcc-4.9
- g++-4.9
- gdb
- os: osx
osx_image: xcode8
compiler: clang
env: TARGET="osx" OF_BRANCH="master"
# Linux ARM7, OF stable: Not supported yet
# - os: linux
# sudo: false
# env: TARGET="linuxarmv7l" OF_BRANCH="stable"
# cache:
# directories:
# - ~/rpi2_toolchain
# - ~/firmware-master
# - ~/archlinux
# Exclude the default build that would otherwise be generated
# see https://github.com/travis-ci/travis-ci/issues/1228
exclude:
- compiler: gcc
- compiler: gcc
install:
- |
if ! [ "${TARGET}" == "rpi" ]; then
cd ~
git clone --depth=1 --branch=$OF_BRANCH https://github.com/openframeworks/openFrameworks
cd ~/openFrameworks/addons
git clone --depth=1 https://github.com/jeffcrouse/ofxJSON.git
cd ~/openFrameworks
scripts/ci/addons/install.sh
fi
- |
if ! [ "${TARGET}" == "rpi" ]; then
cd ~
git clone --depth=1 --branch=$OF_BRANCH https://github.com/openframeworks/openFrameworks
cd ~/openFrameworks/addons
git clone --depth=1 https://github.com/jeffcrouse/ofxJSON.git
cd ~/openFrameworks
scripts/ci/addons/install.sh
fi
script:
- |
if ! [ "${TARGET}" == "rpi" ]; then
cd ~/openFrameworks
scripts/ci/addons/build.sh
fi
- |
if ! [ "${TARGET}" == "rpi" ]; then
cd ~/openFrameworks
scripts/ci/addons/build.sh
fi
git:
depth: 1
depth: 1

79
scripts/ci/rpi/mkimage.sh

@ -1,3 +1,78 @@
#/bin/bash
#!/bin/bash
echo "Hello! The rpi mkimage.sh script."
# Setup script error handling see https://disconnected.systems/blog/another-bash-strict-mode for details
set -xuo pipefail
trap 's=$?; echo "$0: Error on line "$LINENO": $BASH_COMMAND"; exit $s' ERR
IFS=$'\n\t'
# Ensure we are root
if [[ $EUID -ne 0 ]]; then
echo "This script must be run as root" 1>&2
exit 1
fi
# Image creation constants.
# See .travis.yml for environment variables.
MOUNT="mnt"
echo "Welcome to mkimage.sh script."
# Unmount drives and general cleanup on exit, the trap ensures this will always
# run execpt in the most extream cases.
cleanup() {
[[ -f "${MOUNT}/tmp/${SCRIPT}" ]] && rm "${MOUNT}/tmp/${SCRIPT}"
if [[ -d "${MOUNT}" ]]; then
umount "${MOUNT}/dev/pts" || true
umount "${MOUNT}/dev" || true
umount "${MOUNT}/proc" || true
umount "${MOUNT}/sys" || true
umount "${MOUNT}/boot" || true
umount "${MOUNT}" || true
rmdir "${MOUNT}" || true
fi
[ -n "${loopdev:-}" ] && losetup --detach "${loopdev}" || true
}
trap cleanup EXIT
# Download raspbian arm only if we have not already done so
[ ! -f "${RPI_ZIP}" ] && wget "${RPI_URL}"
# Unzip Raspbian
# -u update files, create if necessary
unzip -u "${RPI_ZIP}"
mv "$(ls *.img | head -n 1)" "${IMAGE}"
# Configure loopback device to expand partition 2
loopdev=$(losetup --find --show "${IMAGE}")
echo "Created loopback device ${loopdev}"
echo "Mounting filesystem."
bootdev=$(ls "${loopdev}"*1)
rootdev=$(ls "${loopdev}"*2)
partprobe "${loopdev}"
[ ! -d "${MOUNT}" ] && mkdir "${MOUNT}"
mount "${rootdev}" "${MOUNT}"
[ ! -d "${MOUNT}/boot" ] && mkdir "${MOUNT}/boot"
mount "${bootdev}" "${MOUNT}/boot"
# Copy our installation script and other artifacts.
#install -Dm755 "${SCRIPT}" "${MOUNT}/tmp/${SCRIPT}"
# Prep the chroot.
mount --bind /proc "${MOUNT}/proc"
mount --bind /sys "${MOUNT}/sys"
mount --bind /dev "${MOUNT}/dev"
mount --bind /dev/pts "${MOUNT}/dev/pts"
cp /etc/resolv.conf "${MOUNT}/etc/resolv.conf"
cp /usr/bin/qemu-arm-static "${MOUNT}/usr/bin"
cp "${MOUNT}/etc/ld.so.preload" "${MOUNT}/etc/_ld.so.preload"
echo "" > "${MOUNT}/etc/ld.so.preload"
# Run the installation script as if we would be inside the Raspberry Pi.
#chroot "${MOUNT}" "/tmp/${SCRIPT}"
# Put back the old ld.so.preload script.
mv "${MOUNT}/etc/_ld.so.preload" "${MOUNT}/etc/ld.so.preload"

0
scripts/ci/rpi/pisetup.sh

Loading…
Cancel
Save