forked from ComputationalRadiationPhysics/picongpu
-
Notifications
You must be signed in to change notification settings - Fork 0
/
.travis.yml
180 lines (170 loc) · 7.49 KB
/
.travis.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
language: none
sudo: false
dist: trusty
cache:
apt: true
directories:
- $HOME/.cache/spack
- $HOME/.cache/cmake-3.10.0
pip: true
addons:
apt:
sources:
- ubuntu-toolchain-r-test
packages:
- g++-4.9
- gfortran-4.9 # spack OpenMPI dependency
- environment-modules
- openmpi-bin
- libopenmpi-dev
# clang 5.0.0 is pre-installed
# - clang-tidy-3.9
env:
global:
- SPACK_ROOT: $HOME/.cache/spack
- PATH: $PATH:$HOME/.cache/spack/bin
- CXXFLAGS: "-std=c++11"
install:
#############################################################################
# PMacc CPU-only dependencies #
#############################################################################
- SPACK_FOUND=$(which spack >/dev/null && { echo 0; } || { echo 1; })
- if [ $SPACK_FOUND -ne 0 ]; then
mkdir -p $SPACK_ROOT &&
git clone --depth 50 https://github.com/spack/spack.git $SPACK_ROOT &&
echo -e "config:""\n build_jobs:"" 2" > $SPACK_ROOT/etc/spack/config.yaml &&
echo -e "packages:""\n cmake:""\n version:"" [3.10.0]""\n paths:""\n cmake@3.10.0:"" /home/travis/.cache/cmake-3.10.0""\n buildable:"" False" > $SPACK_ROOT/etc/spack/packages.yaml;
fi
- spack compiler add
# required dependencies - CMake 3.10.0
- if [ "$TRAVIS_OS_NAME" == "linux" ]; then
if [ ! -f $HOME/.cache/cmake-3.10.0/bin/cmake ]; then
wget -O cmake.sh https://cmake.org/files/v3.10/cmake-3.10.0-Linux-x86_64.sh &&
sh cmake.sh --skip-license --exclude-subdir --prefix=$HOME/.cache/cmake-3.10.0 &&
rm cmake.sh;
fi;
elif [ "$TRAVIS_OS_NAME" == "osx" ]; then
if [ ! -d /Applications/CMake.app/Contents/ ]; then
curl -L -s -o cmake.dmg https://cmake.org/files/v3.10/cmake-3.10.0-Darwin-x86_64.dmg &&
yes | hdiutil mount cmake.dmg &&
sudo cp -R "/Volumes/cmake-3.10.0-Darwin-x86_64/CMake.app" /Applications &&
hdiutil detach /dev/disk1s1 &&
rm cmake.dmg;
fi;
fi
- travis_wait spack install
cmake
$COMPILERSPEC
# required dependencies - Boost 1.62.0
- travis_wait spack install
boost@1.62.0~date_time~graph~iostreams~locale~log~random~thread~timer~wave
$COMPILERSPEC
- spack clean -a
- source /etc/profile &&
source $SPACK_ROOT/share/spack/setup-env.sh
- spack load cmake
- spack load boost $COMPILERSPEC
jobs:
fast_finish: true
include:
- stage: 'Target Branch'
install: skip
script:
#############################################################################
# Disallow PRs to `ComputationalRadiationPhysics/picongpu` branch `master` #
# if not an other mainline branch such as `dev` or `release-...` #
#############################################################################
- . test/correctBranchPR
- &style-python
stage: 'Style'
language: python
python: "2.7"
install: pip install -U flake8
script:
#############################################################################
# Test Python Files for PEP8 conformance #
#############################################################################
- flake8 --exclude=thirdParty .
- <<: *style-python
python: "3.6"
- install: skip
language: cpp
script:
#############################################################################
# Conformance with Alpaka: Do not write __global__ CUDA kernels directly #
#############################################################################
- test/hasCudaGlobalKeyword include/pmacc
- test/hasCudaGlobalKeyword share/pmacc/examples
- test/hasCudaGlobalKeyword include/picongpu
- test/hasCudaGlobalKeyword share/picongpu/examples
#############################################################################
# Disallow end-of-line (EOL) white spaces #
#############################################################################
- test/hasEOLwhiteSpace
#############################################################################
# Disallow TABs, use white spaces #
#############################################################################
- test/hasTabs
#############################################################################
# Disallow non-ASCII in source files and scripts #
#############################################################################
- test/hasNonASCII
#############################################################################
# Disallow spaces before pre-compiler macros #
#############################################################################
- test/hasSpaceBeforePrecompiler
#############################################################################
# Enforce angle brackets <...> for includes of external library files #
#############################################################################
- test/hasExtLibIncludeBrackets include boost
- test/hasExtLibIncludeBrackets include alpaka
- test/hasExtLibIncludeBrackets include cupla
- test/hasExtLibIncludeBrackets include splash
- test/hasExtLibIncludeBrackets include mallocMC
- test/hasExtLibIncludeBrackets include/picongpu pmacc
- test/hasExtLibIncludeBrackets share/picongpu/examples pmacc
- test/hasExtLibIncludeBrackets share/picongpu/examples boost
- test/hasExtLibIncludeBrackets share/picongpu/examples alpaka
- test/hasExtLibIncludeBrackets share/picongpu/examples cupla
- test/hasExtLibIncludeBrackets share/picongpu/examples splash
- test/hasExtLibIncludeBrackets share/picongpu/examples mallocMC
- test/hasExtLibIncludeBrackets share/pmacc/examples pmacc
- &static-code-python
stage: 'Static Code Analysis'
language: python
python: "2.7"
install: pip install -U pyflakes
script:
#############################################################################
# Warnings, unused code, etc. #
#############################################################################
- pyflakes .
- <<: *static-code-python
python: "3.6"
- &test-cpp-unit
stage: 'C++ Unit Tests'
language: cpp
env: [ COMPILERSPEC='%gcc@4.9.4' ]
before_install:
- export CXX=g++-4.9
- export CC=gcc-4.9
- export FC=gfortran-4.9
script:
- $CXX --version
- $CC --version
- $FC --version
#############################################################################
# PMacc CPU-only tests #
#############################################################################
- mkdir -p $HOME/build
- cd $HOME/build
- cmake $TRAVIS_BUILD_DIR/include/pmacc
-DALPAKA_ACC_CPU_B_OMP2_T_SEQ_ENABLE=ON
- make -j 2
# - make test # reduce memory and RT costs first
- <<: *test-cpp-unit
env: [ COMPILERSPEC='%clang@5.0.0' ]
before_install:
- export CXX=clang++
- export CC=clang
- export FC=gfortran-4.9