[clfft] 103/128: Refactoring the .travis.yml file; adding OSX support Adding an appveyor.yml file to build for visual studio
Ghislain Vaillant
ghisvail-guest at moszumanska.debian.org
Thu Oct 22 14:54:44 UTC 2015
This is an automated email from the git hooks/post-receive script.
ghisvail-guest pushed a commit to branch master
in repository clfft.
commit 091f3b78e19f7637a12f308a62506a497cdd1ec4
Author: Kent Knox <kent.knox at amd>
Date: Sat Oct 10 23:34:13 2015 -0500
Refactoring the .travis.yml file; adding OSX support
Adding an appveyor.yml file to build for visual studio
---
.travis.yml | 143 ++++++++++++++++++++++++++++++++++++++++++++++++++---------
appveyor.yml | 116 ++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 239 insertions(+), 20 deletions(-)
diff --git a/.travis.yml b/.travis.yml
index 4943a5f..648f3e1 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,31 +1,134 @@
+# Ubuntu name decoder ring; https://en.wikipedia.org/wiki/List_of_Ubuntu_releases
+# Ubuntu 12.04 LTS (Precise Pangolin) <== Travis CI VM image
+# Ubuntu 12.10 (Quantal Quetzal)
+# Ubuntu 13.04 (Raring Ringtail)
+# Ubuntu 13.10 (Saucy Salamander)
+# Ubuntu 14.04 LTS (Trusty Tahr)
+# Ubuntu 14.10 (Utopic Unicorn)
+# Ubuntu 15.04 (Vivid Vervet)
+# Ubuntu 15.10 (Wily Werewolf)
+# Ubuntu 16.04 LTS (Xenial Xantus)
+
+# language: instructs travis what compilers && environment to set up in build matrix
language: cpp
+# sudo: false instructs travis to build our project in a docker VM (faster)
+# Can not yet install fglrx packages with 'false'
+sudo: required # false
+
+# os: expands the build matrix to include multiple os's
+# disable linux, as we get sporadic failures on building boost, needs investigation
+os:
+ - linux
+ - osx
+
+# compiler: expands the build matrix to include multiple compilers (per os)
compiler:
- gcc
+ - clang
+
+addons:
+ # apt: is disabled on osx builds
+ # apt: needed by docker framework to install project dependencies without
+ # sudo. Apt uses published Ubunto PPA's from https://launchpad.net/
+ # https://github.com/travis-ci/apt-source-whitelist/blob/master/ubuntu.json
+ apt:
+ sources:
+ # ubuntu-toolchain-r-test contains newer versions of gcc to install
+ # - ubuntu-toolchain-r-test
+ # llvm-toolchain-precise-3.6 contains newer versions of clang to install
+ # - llvm-toolchain-precise-3.6
+ # kubuntu-backports contains newer versions of cmake to install
+ - kubuntu-backports
+ # boost-latest contains boost v1.55
+ - boost-latest
+ packages:
+ # g++-4.8 is minimum version considered to be the first good c++11 gnu compiler
+ # - g++-4.8
+ # - clang-3.6
+ # We require v2.8.12 minimum
+ - cmake
+ # I'm finding problems between pre-compiled versions of boost ublas, with gtest
+ # stl_algobase.h: error: no matching function for call to swap()
+ - libboost-program-options1.55-dev
+ # - libboost-serialization1.55-dev
+ # - libboost-filesystem1.55-dev
+ # - libboost-system1.55-dev
+ # - libboost-regex1.55-dev
+ # The package opencl-headers on 'precise' only installs v1.1 cl headers; uncomment for 'trusty' or greater
+# - opencl-headers
+ # Uncomment one of the following when fglrx modules are added to the apt whitelist
+# - fglrx
+# - fglrx=2:8.960-0ubuntu1
+# - fglrx=2:13.350.1-0ubuntu0.0.1
+
+# env: specifies additional global variables to define per row in build matrix
+env:
+ global:
+ - CLFFT_ROOT=${TRAVIS_BUILD_DIR}/bin/make/release
+
+# The following filters our build matrix; we are interested in linux-gcc & osx-clang
+matrix:
+ exclude:
+ - os: linux
+ compiler: clang
+ - os: osx
+ compiler: gcc
before_install:
- - sudo apt-get update -qq
- - sudo apt-get install -qq fglrx opencl-headers libboost-program-options-dev libfftw3-dev
-# Uncomment below to help verify the installs above work
-# - ls -la /usr/lib/libboost*
-# - ls -la /usr/include/boost
+ # Remove the following linux clause when fglrx can be installed with sudo: false
+ - if [ ${TRAVIS_OS_NAME} == "linux" ]; then
+ sudo apt-get update -qq &&
+ sudo apt-get install -qq fglrx=2:13.350.1-0ubuntu0.0.1;
+ fi
+ - if [ ${TRAVIS_OS_NAME} == "linux" ]; then
+ export OPENCL_ROOT="${TRAVIS_BUILD_DIR}/opencl-headers";
+ fi
+ - if [ ${TRAVIS_OS_NAME} == "osx" ]; then
+ brew update;
+ brew outdated boost || brew upgrade boost;
+ brew outdated cmake || brew upgrade cmake;
+ fi
+ # - if [ ${CXX} = "g++" ]; then export CXX="g++-4.8" CC="gcc-4.8"; fi
+ - cmake --version;
+ - ${CC} --version;
+ - ${CXX} --version;
-before_script:
- - cd ${TRAVIS_BUILD_DIR}
- - mkdir -p bin/clFFT
- - cd bin/clFFT
- - cmake -DBoost_NO_SYSTEM_PATHS=OFF -DCMAKE_INSTALL_PREFIX:PATH=$PWD/package ../../src
+install:
+ # 'Precise' only distributes v1.1 opencl headers; download 1.2 headers from khronos website
+ # Remove when the travis VM upgrades to 'trusty' or beyond
+ - if [ ${TRAVIS_OS_NAME} == "linux" ]; then
+ mkdir -p ${OPENCL_ROOT}/include/CL;
+ pushd ${OPENCL_ROOT}/include/CL;
+ wget -w 1 -r -np -nd -nv -A h,hpp https://www.khronos.org/registry/cl/api/1.2/;
+ popd;
+ fi
+ # osx image does not contain cl.hpp file; download from Khronos
+ # - if [ ${TRAVIS_OS_NAME} == "osx" ]; then
+ # pushd /System/Library/Frameworks/OpenCL.framework/Versions/A/Headers/;
+ # sudo wget -w 1 -np -nd -nv -A h,hpp https://www.khronos.org/registry/cl/api/1.2/cl.hpp;
+ # popd;
+ # fi
-script:
- - make install
+# Use before_script: to run configure steps
+before_script:
+ - mkdir -p ${CLFFT_ROOT}
+ - pushd ${CLFFT_ROOT}
+ - cmake -DCMAKE_BUILD_TYPE=Release -DBoost_NO_SYSTEM_PATHS=OFF -DOPENCL_ROOT=${OPENCL_ROOT} ${TRAVIS_BUILD_DIR}/src
-after_success:
- - cd ${TRAVIS_BUILD_DIR}/bin/clFFT
+# use script: to execute build steps
+script:
- make package
-notifications:
- email:
- - clmath-developers at googlegroups.com
- on_success: change
- on_failure: always
-
+deploy:
+ provider: releases
+ prerelease: true
+ draft: true
+ skip_cleanup: true
+ api_key:
+ secure: MBkxtcfSk+4UvGRO+WRhmS86vIVzAs0LIF2sAtr/S+Ed+OdUAuhZypUsDXGWtK3mL55v9c8BZXefFfHfJqElcNmyHKwCptbCR/JiM8YBtjoy2/RW1NcJUZp+QuRlk23xPADj7QkPjv7dfrQUMitkLUXAD+uTmMe2l8gmlbhMrQqPBKhb+31FNv6Lmo6oa6GjbiGi7qjsrJc7uQjhppLam+M7BZbBALGbIqMIrb2BMDMMhBoDbb4zSKrSg3+krd3kKiCClJlK7xjIlyFXZ527ETQ+PMtIeQb0eJ3aQwa4caBRCm5BDzt8GnJ48S88EkynbQioCEE87ebcyOM7M+wfslW/Fm1Y86X5odIljkOmTNKoDvgLxc9vUCBtMyVHNIgZcToPdsrMsGxcHV+JtU3yVQVm6dnA5P/zG5bA+aBjsd7p7BdOE4fdhvZV5XRAk/wmiyWalF7hKJxHIiWAKknL+tpPDDUF+fHm [...]
+ file: ${CLFFT_ROOT}/*.tar.gz
+ file_glob: true
+ on:
+ all_branches: true
+ tags: true
diff --git a/appveyor.yml b/appveyor.yml
new file mode 100644
index 0000000..350de68
--- /dev/null
+++ b/appveyor.yml
@@ -0,0 +1,116 @@
+# Appveyor OS list
+# Windows Server 2012 R2 (x64) <== Appveyor default image
+# Visual Studio 2015
+
+# os: expands the build matrix to include multiple os's
+os:
+ - Windows Server 2012
+
+# compiler: expands the build matrix to include multiple compilers (per os)
+platform:
+ - x64
+
+configuration:
+ - Release
+
+# Only clone the top level commit; don't bother with history
+shallow_clone: true
+
+# environment: specifies additional global variables to define per row in build matrix
+environment:
+ global:
+ CLFFT_ROOT: "%APPVEYOR_BUILD_FOLDER%\\bin\\nmake\\release"
+ OPENCL_ROOT: "%APPVEYOR_BUILD_FOLDER%\\bin\\opencl"
+ FFTW_ROOT: "%APPVEYOR_BUILD_FOLDER%\\bin\\fftw"
+ BOOST_ROOT: "C:\\Libraries\\boost_1_58_0"
+ OPENCL_REGISTRY: "https://www.khronos.org/registry/cl"
+
+init:
+ - echo init step
+ - cmake --version
+ - C:\"Program Files (x86)"\"Microsoft Visual Studio 12.0"\VC\vcvarsall.bat %PLATFORM%
+ # Uncomment the following to display Remote Desktop connection details
+ # - ps: iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
+
+# We need to create an opencl import library that clfft can link against
+# Vendor based OpenCL packages are hard to use because of download size, registration requirements
+# and unattended installs not well supported
+install:
+ - echo Installing OpenCL
+ - ps: mkdir $env:OPENCL_ROOT
+ - ps: pushd $env:OPENCL_ROOT
+ - ps: $opencl_registry = $env:OPENCL_REGISTRY
+ # This downloads the source to the example/demo icd library
+ - ps: wget $opencl_registry/specs/opencl-icd-1.2.11.0.tgz -OutFile opencl-icd-1.2.11.0.tgz
+ - ps: 7z x opencl-icd-1.2.11.0.tgz
+ - ps: 7z x opencl-icd-1.2.11.0.tar
+ - ps: mv .\icd\* .
+ # This downloads all the opencl header files
+ # The cmake build files expect a directory called inc
+ - ps: mkdir inc/CL
+ - ps: wget $opencl_registry/api/1.2/ | select -ExpandProperty links | where {$_.href -like "*.h*"} | select -ExpandProperty outerText | foreach{ wget $opencl_registry/api/1.2/$_ -OutFile inc/CL/$_ }
+ # - ps: dir; if( $lastexitcode -eq 0 ){ dir include/CL } else { Write-Output boom }
+ # Create the static import lib in a directory called lib, so findopencl() will find it
+ - ps: mkdir lib
+ - ps: pushd lib
+ - cmake -G "NMake Makefiles" ..
+ - nmake
+ - ps: popd
+ # Rename the inc directory to include, so FindOpencl() will find it
+ - ps: ren inc include
+ - ps: popd
+ - ps: popd
+
+ - echo Installing FFTW
+ - ps: mkdir $env:FFTW_ROOT
+ - ps: pushd $env:FFTW_ROOT
+ # This downloads the windows 64-bit pre-compiled dlls
+ - ps: wget ftp://ftp.fftw.org/pub/fftw/fftw-3.3.4-dll64.zip -OutFile fftw-3.3.4-dll64.zip
+ - ps: 7z x fftw-3.3.4-dll64.zip
+# - ps: pushd fftw-3.3.4-dll64
+ - ps: lib /machine:x64 /def:libfftw3-3.def
+ - ps: lib /machine:x64 /def:libfftw3f-3.def
+ - ps: lib /machine:x64 /def:libfftw3l-3.def
+
+# before_build is used to run configure steps
+before_build:
+ - echo before_build step
+ # Boost 1.58 is not installed in typical fashion, help FindBoost() find binary libs with BOOST_LIBRARYDIR
+ - ps: $env:BOOST_LIBRARYDIR = "$env:BOOST_ROOT/lib64-msvc-12.0"
+ - ps: mkdir $env:CLFFT_ROOT
+ - ps: pushd $env:CLFFT_ROOT
+ - cmake -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=%CONFIGURATION% -DBoost_NO_SYSTEM_PATHS=OFF -DOPENCL_ROOT=%OPENCL_ROOT% %APPVEYOR_BUILD_FOLDER%/src
+
+# build_script invokes the compiler
+build_script:
+ - echo build_script step
+ - nmake package
+
+after_build:
+ - echo after_build step
+ - ps: ls $env:CLFFT_ROOT
+ - ps: mv $env:CLFFT_ROOT\*.zip $env:APPVEYOR_BUILD_FOLDER
+
+# Appyeyor will save a copy of the package in it's personal storage
+artifacts:
+ - path: '*.zip'
+ name: binary_zip
+ type: zip
+
+# on_finish always executes regardless of passed or failed builds
+on_finish:
+ - echo on_finish step
+
+# Appveyor will push the artifacts it has saved to GitHub 'releases' tab
+deploy:
+ provider: GitHub
+ auth_token:
+ secure: dRXIWJKpU7h2RsHX7RqmyYCtCw+Q9O3X5MArloY6p34GZC1w7bp+jQYTZqbdO7bw
+ artifact: binary_zip
+ draft: true
+ prerelease: true
+ on:
+ appveyor_repo_tag: true
+
+ # Uncomment the following to pause the VM and wait for RDP connetion to debug
+ # - ps: $blockRdp = $true; iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/clfft.git
More information about the debian-science-commits
mailing list