186 lines
7.6 KiB
YAML
Executable File
186 lines
7.6 KiB
YAML
Executable File
####
|
|
# Travis-CI configuration file for FreeCAD.
|
|
#
|
|
# This build configuration will build and test FreeCAD on both Linux
|
|
# and Mac OS X. For Mac OS X, this configuration will also package
|
|
# and deploy the build to GitHub provided the following prerequisites
|
|
# are satisfied:
|
|
#
|
|
# GH_TOKEN is defined as a secure environment variable and contains a
|
|
# a valid GitHub OAUTH token with repo_deployment scope.
|
|
# NOTE: Define this env using the Travis-CI Repo Settings UI
|
|
#
|
|
# FREECAD_RELEASE: A GitHub Release with this identifier exists in the
|
|
# repo. The Travis job will deploy the OS X build to this
|
|
# GitHub release name as a release asset.
|
|
##
|
|
env:
|
|
global:
|
|
- FREECAD_RELEASE="0.17"
|
|
- DEPLOY_RELEASE=${DEPLOY_RELEASE:-$FREECAD_RELEASE}
|
|
- CMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE:-Release}
|
|
- OSX_PORTS_CACHE=${OSX_PORTS_CACHE:-FreeCAD/FreeCAD-ports-cache}
|
|
matrix:
|
|
- CMAKE_OPTS="-DBUILD_FEM_NETGEN=ON"
|
|
|
|
language: cpp
|
|
|
|
compiler:
|
|
- clang
|
|
- gcc
|
|
|
|
python: 2.7
|
|
|
|
os:
|
|
- linux
|
|
- osx
|
|
|
|
dist: trusty
|
|
sudo: required
|
|
|
|
matrix:
|
|
exclude:
|
|
- os: osx
|
|
compiler: gcc
|
|
|
|
git:
|
|
depth: 1500
|
|
|
|
notifications:
|
|
email:
|
|
recipients:
|
|
- yorik@uncreated.net
|
|
on_success: never
|
|
on_failure: never
|
|
|
|
before_install:
|
|
- eval "$(curl -fsSL "https://raw.githubusercontent.com/${OSX_PORTS_CACHE}/v${FREECAD_RELEASE}/travis-helpers.sh")"
|
|
- |
|
|
case "${TRAVIS_OS_NAME}" in
|
|
|
|
"linux")
|
|
sudo apt-get update -qq
|
|
sudo apt-get install -y doxygen \
|
|
libboost1.55-dev \
|
|
libboost-filesystem1.55-dev \
|
|
libboost-program-options1.55-dev \
|
|
libboost-python1.55-dev \
|
|
libboost-regex1.55-dev \
|
|
libboost-signals1.55-dev \
|
|
libboost-system1.55-dev \
|
|
libboost-thread1.55-dev \
|
|
libcoin80 \
|
|
libcoin80-dev \
|
|
libeigen3-dev \
|
|
liboce-foundation-dev \
|
|
liboce-modeling-dev \
|
|
liboce-ocaf-dev \
|
|
liboce-ocaf-lite-dev \
|
|
liboce-visualization-dev \
|
|
libpyside-dev \
|
|
libqtcore4 \
|
|
libshiboken-dev \
|
|
libxerces-c-dev \
|
|
libxmu-dev \
|
|
libxmu-headers \
|
|
libxmu6 \
|
|
libxmuu-dev \
|
|
libxmuu1 \
|
|
netgen \
|
|
netgen-headers \
|
|
oce-draw \
|
|
pyside-tools \
|
|
python-dev \
|
|
python-pyside \
|
|
python-matplotlib \
|
|
qt4-dev-tools \
|
|
qt4-qmake \
|
|
shiboken \
|
|
swig
|
|
|
|
#Patch the system - there is a bug related to invalid location of libs on ubuntu 12.04
|
|
sudo ln -s /usr/lib/x86_64-linux-gnu/ /usr/lib/i386-linux-gnu
|
|
export DISPLAY=:99.0
|
|
sh -e /etc/init.d/xvfb start
|
|
|
|
CMAKE_ARGS="${CMAKE_OPTS} -DPYTHON_EXECUTABLE=/usr/bin/python"
|
|
INSTALLED_APP_PATH="/usr/local/bin/FreeCAD"
|
|
;;
|
|
|
|
"osx")
|
|
brew update >/dev/null
|
|
if [ "${OSX_PORTS_CACHE}X" != "X" ]; then
|
|
brew install jq
|
|
cacheContext=$(create_helper_context repo=${OSX_PORTS_CACHE} auth_token=${GH_TOKEN} release=${FREECAD_RELEASE})
|
|
prime_local_ports_cache $cacheContext
|
|
fi
|
|
brew install eigen \
|
|
freetype \
|
|
qt \
|
|
python \
|
|
boost-python \
|
|
pyside \
|
|
pyside-tools \
|
|
xerces-c \
|
|
orocos-kdl \
|
|
homebrew/science/oce \
|
|
homebrew/python/matplotlib
|
|
brew install --with-oce homebrew/science/nglib
|
|
brew install --without-framework --without-soqt sanelson/freecad/coin
|
|
brew install --HEAD pivy
|
|
|
|
#Install the 3DConnexion frameworks
|
|
if [ ! -d /Library/Frameworks/3DconnexionClient.framework ]; then
|
|
curl -o /tmp/3dFW.dmg -L 'http://www.3dconnexion.com/index.php?eID=sdl&ext=tx_iccsoftware&oid=a273bdbc-c289-e10d-816b-567043331c9e&filename=3DxWareMac_v10-2-5_r2142.dmg'
|
|
hdiutil attach -readonly /tmp/3dFW.dmg
|
|
sudo installer -package /Volumes/3Dconnexion\ Software/Install\ 3Dconnexion\ software.pkg -target /
|
|
fi
|
|
|
|
#Remove GDAL if installed because it results in non-existent dependent library exceptions
|
|
if [ -e /usr/local/lib/libgdal.1.dylib ]; then brew unlink gdal; fi
|
|
|
|
CMAKE_ARGS="${CMAKE_OPTS} -DFREECAD_USE_EXTERNAL_KDL=ON -DFREECAD_CREATE_MAC_APP=ON"
|
|
INSTALLED_APP_PATH="/usr/local/FreeCAD.app/Contents/bin/FreeCAD"
|
|
;;
|
|
|
|
*)
|
|
echo "Invalid or unsupported operating system ${TRAVIS_OS_NAME}"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
install:
|
|
####
|
|
# Build FreeCAD with cmake options set above for each platform
|
|
##
|
|
- mkdir build && cd build && cmake ${CMAKE_ARGS} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} ../
|
|
|
|
script:
|
|
####
|
|
# Install FreeCAD and run unit tests. Test failures will fail the build
|
|
##
|
|
- sudo make -j2 install
|
|
- ${INSTALLED_APP_PATH} --run-test 0
|
|
- ${INSTALLED_APP_PATH} --log-file /tmp/FreeCAD_installed.log &
|
|
- sleep 10 && pkill FreeCAD
|
|
- cat /tmp/FreeCAD_installed.log
|
|
- grep --file=../.log_errors /tmp/FreeCAD_installed.log ; [ $? == 1 ] && echo "No errors from .log_errors file found in the log after start from /usr/local/bin" || ( echo "Error from .log_errors found!" && false )
|
|
|
|
after_success:
|
|
####
|
|
# Package and deploy the build to GitHub. This will only run for builds on
|
|
# master (i.e. pull requests are only built and tested but not deployed).
|
|
#
|
|
# GH_TOKEN must be set in order to deploy releases to GitHub
|
|
##
|
|
- |
|
|
if [ "${TRAVIS_OS_NAME}" == "osx" -a "${TRAVIS_PULL_REQUEST}" == "false" ]; then
|
|
brew install jq node && npm install -g appdmg
|
|
export VSN=$(python ${TRAVIS_BUILD_DIR}/src/Tools/ArchiveNameFromVersionHeader.py ${TRAVIS_BUILD_DIR}/build/src/Build/Version.h)
|
|
export DEPLOYMENT_ARCHIVE=${VSN}.dmg
|
|
appdmg ${TRAVIS_BUILD_DIR}/src/MacAppBundle/DiskImage/layout.json "${DEPLOYMENT_ARCHIVE}"
|
|
deployContext=$(create_helper_context repo=${TRAVIS_REPO_SLUG} auth_token=${GH_TOKEN} release=${DEPLOY_RELEASE})
|
|
gitHub_deploy_asset_to_release_named $deployContext ${DEPLOYMENT_ARCHIVE}
|
|
gitHub_prune_assets_for_release_named $deployContext "-OSX-" 3
|
|
fi
|