Skip to content

Commit

Permalink
Use install scripts embedded in Drake binary distribution (#89)
Browse files Browse the repository at this point in the history
  • Loading branch information
jamiesnape authored Feb 6, 2018
1 parent b4c9ab4 commit c083858
Show file tree
Hide file tree
Showing 8 changed files with 154 additions and 110 deletions.
38 changes: 38 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# Copyright (c) 2018, Massachusetts Institute of Technology.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice, this
# list of conditions and the following disclaimer.
#
# * 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.
#
# * Neither the name of the Massachusetts Institute of Technology 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 MASSACHUSETTS INSTITUTE OF TECHNOLOGY 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 MASSACHUSETTS
# INSTITUTE OF TECHNOLOGY 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.

---
os: osx
osx_image: xcode9

language: cpp
compiler: clang

install: ./scripts/continuous_integration/travis_ci/setup
script: ./scripts/continuous_integration/travis_ci/build_test
18 changes: 10 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,15 @@ Scripts are provided for various CI instances in `scripts/continuous_integration

* `circle_ci` : exemplifies how to put a project depending on a Drake installation on Circle CI
* `jenkins` : provides complete coverage of shambhala for all subprojects and officially supported platforms
* `travis_ci` : examplifies how to put a project depending on a Drake installation on Travis CI

| **Subproject** | **Circle CI** | **Jenkins** |
|:---:|:---:|:---:|
| `drake_bazel_external` | - | o |
| `drake_cmake_external` | - | o |
| `drake_cmake_installed` | o | o |
||[![CircleCI](https://img.shields.io/circleci/project/github/RobotLocomotion/drake-shambhala/master.svg)](https://circleci.com/gh/RobotLocomotion/drake-shambhala)|[![Jenkins](https://img.shields.io/jenkins/s/https/drake-jenkins.csail.mit.edu/job/RobotLocomotion/job/drake-shambhala/job/master.svg)](https://drake-jenkins.csail.mit.edu/job/RobotLocomotion/job/drake-shambhala/)|
| **Subproject** | **Circle CI** | **Jenkins** | **Travis CI** |
|:---:|:---:|:---:|:---:|
| `drake_bazel_external` | - | o | - |
| `drake_cmake_external` | - | o | - |
| `drake_cmake_installed` | o | o | o |
||[![CircleCI](https://img.shields.io/circleci/project/github/RobotLocomotion/drake-shambhala/master.svg)](https://circleci.com/gh/RobotLocomotion/drake-shambhala)|[![Jenkins](https://img.shields.io/jenkins/s/https/drake-jenkins.csail.mit.edu/job/RobotLocomotion/job/drake-shambhala/job/master.svg)](https://drake-jenkins.csail.mit.edu/job/RobotLocomotion/job/drake-shambhala/)|[![Travis CI](https://img.shields.io/travis/RobotLocomotion/drake-shambhala/master.svg)](https://travis-ci.org/RobotLocomotion/drake-shambhala)

Note, the Circle CI jobs only build and test `drake_cmake_installed` since it is the exemplary case
for a lightweight, open-source build on a public CI server.
Note, the Circle CI and Travis CI jobs only build and test `drake_cmake_installed`
since it is the exemplary case for a lightweight, open-source build on a public
CI server.
13 changes: 0 additions & 13 deletions scripts/continuous_integration/common/linux_ubuntu_xenial
Original file line number Diff line number Diff line change
Expand Up @@ -34,16 +34,3 @@ set -eux
export DEBIAN_FRONTEND='noninteractive'

yes | ./scripts/setup/linux/ubuntu/xenial/install_prereqs

pushd /opt

# 'latest' or a date, e.g. '20170719' will work for version
readonly drake_version='latest'
readonly drake_tarball="drake-${drake_version}-xenial.tar.gz"
readonly drake_url="https://drake-packages.csail.mit.edu/drake/nightly/${drake_tarball}"

curl -O "${drake_url}"
tar -xzf "${drake_tarball}"
rm -f "${drake_tarball}"

popd
13 changes: 0 additions & 13 deletions scripts/continuous_integration/common/mac
Original file line number Diff line number Diff line change
Expand Up @@ -32,16 +32,3 @@
set -eux

./scripts/setup/mac/install_prereqs

pushd /opt

# 'latest' or a date, e.g. '20170719' will work for version
readonly drake_version='latest'
readonly drake_tarball="drake-${drake_version}-mac.tar.gz"
readonly drake_url="https://drake-packages.csail.mit.edu/drake/nightly/${drake_tarball}"

curl -O "${drake_url}
tar -xzf "${drake_tarball}"
rm -f "${drake_tarball}"
popd
34 changes: 34 additions & 0 deletions scripts/continuous_integration/travis_ci/build_test
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
#!/bin/bash

# Copyright (c) 2018, Massachusetts Institute of Technology
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice, this
# list of conditions and the following disclaimer.
#
# * 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.
#
# * Neither the name of the Massachusetts Institute of Technology 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 MASSACHUSETTS INSTITUTE OF TECHNOLOGY 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 MASSACHUSETTS
# INSTITUTE OF TECHNOLOGY 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 -eux

./scripts/continuous_integration/common/drake_cmake_installed
43 changes: 43 additions & 0 deletions scripts/continuous_integration/travis_ci/setup
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
#!/bin/bash

# Copyright (c) 2018, Massachusetts Institute of Technology
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice, this
# list of conditions and the following disclaimer.
#
# * 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.
#
# * Neither the name of the Massachusetts Institute of Technology 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 MASSACHUSETTS INSTITUTE OF TECHNOLOGY 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 MASSACHUSETTS
# INSTITUTE OF TECHNOLOGY 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 -eux

# https://github.com/travis-ci/travis-ci/issues/8552
brew update

# https://github.com/travis-ci/travis-ci/issues/8826
brew cask uninstall oclint

# https://github.com/travis-ci/travis-ci/issues/6688
/usr/local/opt/python/libexec/bin/pip uninstall -y scipy numpy

./scripts/continuous_integration/common/mac
46 changes: 13 additions & 33 deletions scripts/setup/linux/ubuntu/xenial/install_prereqs
Original file line number Diff line number Diff line change
Expand Up @@ -29,49 +29,43 @@
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

set -euo pipefail
set -euxo pipefail

if [[ "${EUID}" -ne 0 ]]; then
echo 'This script must be run as root' >&2
exit 1
fi

apt update -qq
apt install --no-install-recommends $(tr '\n' ' ' <<EOF
curl
software-properties-common
EOF
)
# Install Drake dependencies.
apt update
apt install --no-install-recommends wget

add-apt-repository -s 'deb [arch=amd64] http://storage.googleapis.com/bazel-apt stable jdk1.8'
curl -L https://bazel.build/bazel-release.pub.gpg | apt-key add -
wget -O drake.tar.gz https://drake-packages.csail.mit.edu/drake/nightly/drake-latest-xenial.tar.gz
trap 'rm -f drake.tar.gz' EXIT
tar -xf drake.tar.gz -C /opt

add-apt-repository ppa:dreal/dreal
/opt/drake/share/drake/setup/install_prereqs

apt update -qq
# Install additional dependencies for development.
wget -O - https://bazel.build/bazel-release.pub.gpg | apt-key add
echo 'deb [arch=amd64] http://storage.googleapis.com/bazel-apt stable jdk1.8' > /etc/apt/sources.list.d/bazel.list

# Install development and Drake dependencies.
apt update
apt install --no-install-recommends $(tr '\n' ' ' <<EOF
bazel
bison
ca-certificates
clang-format-4.0
cmake
coinor-libclp-dev
coinor-libipopt-dev
flex
g++
git
libboost-all-dev
libblas-dev
libbz2-dev
libccd-dev
libexpat1-dev
libfreetype6-dev
libgflags-dev
libglib2.0-dev
libglu1-mesa-dev
libhdf5-dev
libibex-dev
libjpeg8-dev
libjsoncpp-dev
liblapack-dev
Expand All @@ -81,40 +75,26 @@ libnetcdf-dev
libnlopt-dev
libogg-dev
libpng12-dev
libprotobuf-dev
libqt5opengl5-dev
libqt5x11extras5-dev
libtheora-dev
libtiff5-dev
libtinyxml-dev
libtinyxml2-dev
libtool
libxml2-dev
libxt-dev
libyaml-cpp-dev
make
openjdk-8-jdk
openssh-client
patchelf
pkg-config
protobuf-compiler
python-dev
python-gtk2
python-lxml
python-numpy
python-protobuf
python-scipy
python-yaml
qt5-default
zlib1g-dev
EOF
)

curl -LO https://dl.bintray.com/dreal/dreal/dreal_4.17.12.2_amd64.deb
trap 'rm -f dreal_4.17.12.2_amd64.deb' EXIT
echo '9347492e47a518ff78991e15fe9de0cff0200573091385e42940cdbf1fcf77a5 dreal_4.17.12.2_amd64.deb' | sha256sum -c
dpkg -i dreal_4.17.12.2_amd64.deb

# Install additional dependencies for various compatibility examples.
apt install --no-install-recommends $(tr '\n' ' ' <<EOF
libpcl-dev
Expand Down
59 changes: 16 additions & 43 deletions scripts/setup/mac/install_prereqs
Original file line number Diff line number Diff line change
Expand Up @@ -29,70 +29,43 @@
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

set -euo pipefail
set -euxo pipefail

if [[ "${EUID}" -eq 0 ]]; then
echo 'This script must NOT be run as root' >&2
exit 1
fi

if ! command -v javac &>/dev/null; then
echo 'Java is NOT installed' >&2
exit 2
if [[ ! -d /opt/drake ]]; then
sudo mkdir -p /opt/drake
sudo chmod g+rwx /opt/drake
sudo chown "${USER}" /opt/drake
sudo chgrp admin /opt/drake
fi

if ! command -v brew &>/dev/null; then
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
fi
# Install Drake dependencies.
curl -o drake.tar.gz https://drake-packages.csail.mit.edu/drake/nightly/drake-latest-mac.tar.gz
trap 'rm -f drake.tar.gz' EXIT
tar -xf drake.tar.gz -C /opt

if [[ ! -f /usr/include/expat.h || ! -f /usr/include/zlib.h ]]; then
echo 'Command Line Tools for Xcode are NOT installed' >&2
exit 3
fi
/opt/drake/share/drake/setup/install_prereqs

brew tap dreal-deps/coinor
brew tap dreal-deps/ibex
brew tap dreal/dreal
brew tap robotlocomotion/director

brew update
brew upgrade
if ! command -v javac &>/dev/null; then
echo 'Java JDK is NOT installed' >&2
exit 4
fi

# Install development and Drake dependencies.
# Install additional dependencies for development.
brew install $(tr '\n' ' ' <<EOF
bazel
boost
clang-format
cmake
dreal
gflags
glib
ipopt
libccd
libyaml
nlopt
numpy
pkg-config
protobuf
python
scipy
tinyxml
tinyxml2
[email protected]
yaml-cpp
EOF
)

if [[ ! -f "${HOME}/.bazelrc" ]] || ! grep -q 'build --python_path=/usr/local/opt/python/libexec/bin/python' "${HOME}/.bazelrc"; then
echo 'build --python_path=/usr/local/opt/python/libexec/bin/python' >> "${HOME}/.bazelrc"
fi

pip2 install --upgrade $(tr '\n' ' ' <<EOF
lxml
pip
PyYAML
EOF
)

# Install additional dependencies for various compatibility examples.
brew install pcl

0 comments on commit c083858

Please sign in to comment.