d93efe02b0b144b130e5a6bfd106fb4d2823ca68
[platform/kernel/u-boot.git] / .travis.yml
1 # Copyright Roger Meier <r.meier@siemens.com>
2 # SPDX-License-Identifier:      GPL-2.0+
3
4 # build U-Boot on Travis CI - https://travis-ci.org/
5
6 sudo: required
7 dist: trusty
8
9 language: c
10
11 addons:
12   apt:
13     packages:
14     - cppcheck
15     - sloccount
16     - sparse
17     - bc
18     - build-essential
19     - libsdl1.2-dev
20     - python
21     - python-virtualenv
22
23 cache:
24  - apt
25
26 install:
27  # install latest device tree compiler
28  - git clone --depth=1 git://git.kernel.org/pub/scm/utils/dtc/dtc.git /tmp/dtc
29  - make -j4 -C /tmp/dtc
30  # prepare buildman environment
31  - export BUILDMAN_ROOT="root:"
32  - export BUILDMAN_PPC="ppc:"
33  - export BUILDMAN_ARM="arm:"
34  - export BUILDMAN_SANDBOX="sandbox:"
35  - echo -e "[toolchain]\n${BUILDMAN_ROOT} /\n" > ~/.buildman
36  - echo -e "${BUILDMAN_PPC} /opt/eldk-5.4/powerpc/sysroots/i686-eldk-linux/usr/bin/powerpc-linux/\n" >> ~/.buildman
37  - echo -e "${BUILDMAN_ARM} /opt/eldk-5.4/armv5te/sysroots/i686-eldk-linux/usr/bin/armv5te-linux-gnueabi/\n" >> ~/.buildman
38  - echo -e "${BUILDMAN_SANDBOX} /usr/bin/gcc\n" >> ~/.buildman
39  - export BUILDMAN_ALIAS="x86:"
40  - export BUILDMAN_ALIAS_ARM="arm:"
41  - echo -e "\n\n[toolchain-alias]\n${BUILDMAN_ALIAS} i386\n" >> ~/.buildman
42  - echo -e "${BUILDMAN_ALIAS_ARM} armv5te\n" >> ~/.buildman
43  - cat ~/.buildman
44  - virtualenv /tmp/venv
45  - . /tmp/venv/bin/activate
46  - pip install pytest
47
48 env:
49   global:
50     - PATH=/tmp/dtc:$PATH
51     - BUILD_DIR=build
52     - HOSTCC="cc"
53     - HOSTCXX="c++"
54
55 before_script:
56   # install toolchains based on TOOLCHAIN} variable
57   - if [[ "${TOOLCHAIN}" == *aarch64* ]]; then ./tools/buildman/buildman --fetch-arch aarch64 ; fi
58   - if [[ "${TOOLCHAIN}" == *arm* ]]; then wget ftp://ftp.denx.de/pub/eldk/5.4/targets/armv5te/eldk-eglibc-i686-arm-toolchain-gmae-5.4.sh ; fi
59   - if [[ "${TOOLCHAIN}" == *arm* ]]; then sh eldk-eglibc-i686-arm-toolchain-gmae-5.4.sh -y ; fi
60   - if [[ "${TOOLCHAIN}" == *avr32* ]]; then ./tools/buildman/buildman --fetch-arch avr32 ; fi
61   - if [[ "${TOOLCHAIN}" == *i386* ]]; then ./tools/buildman/buildman sandbox --fetch-arch i386 ; fi
62   - if [[ "${TOOLCHAIN}" == *m68k* ]]; then ./tools/buildman/buildman --fetch-arch m68k ; fi
63   - if [[ "${TOOLCHAIN}" == *mips* ]]; then ./tools/buildman/buildman --fetch-arch mips ; fi
64   - if [[ "${TOOLCHAIN}" == *ppc* ]]; then wget ftp://ftp.denx.de/pub/eldk/5.4/targets/powerpc/eldk-eglibc-i686-powerpc-toolchain-gmae-5.4.sh ; fi
65   - if [[ "${TOOLCHAIN}" == *ppc* ]]; then sh eldk-eglibc-i686-powerpc-toolchain-gmae-5.4.sh -y ; fi
66
67 script:
68  # the execution sequence for each test
69  - if [[ "${TEST_CMD}" != "" ]]; then
70      ${TEST_CMD};
71    fi
72  # Exit code 129 means warnings only.
73  - if [[ "${BUILDMAN}" != "" ]]; then
74      set +e;
75      tools/buildman/buildman ${BUILDMAN};
76      if [[ "$?" == "0" || "$?" == "129" ]]; then
77        exit 0;
78      else
79        exit $?;
80      fi
81    fi
82
83 matrix:
84   include:
85   # we need to build by vendor due to 50min time limit for builds
86   # each env setting here is a dedicated build
87     - env:
88         - BUILDMAN="arm1136"
89           TOOLCHAIN="arm"
90     - env:
91         - BUILDMAN="arm1136"
92           TOOLCHAIN="arm"
93     - env:
94         - BUILDMAN="arm1176"
95           TOOLCHAIN="arm"
96     - env:
97         - BUILDMAN="arm720t"
98           TOOLCHAIN="arm"
99     - env:
100         - BUILDMAN="arm920t"
101           TOOLCHAIN="arm"
102     - env:
103         - BUILDMAN="atmel -x avr32"
104           TOOLCHAIN="arm"
105     - env:
106         - BUILDMAN="avr32"
107           TOOLCHAIN="avr32"
108     - env:
109         - BUILDMAN="davinci"
110           TOOLCHAIN="arm"
111     - env:
112         - BUILDMAN="denx"
113           TOOLCHAIN="arm"
114     - env:
115         - BUILDMAN="freescale -x powerpc,m68k,aarch64"
116           TOOLCHAIN="arm"
117     - env:
118         - BUILDMAN="sandbox x86"
119           TOOLCHAIN="i386"
120     - env:
121         - BUILDMAN="kirkwood"
122           TOOLCHAIN="arm"
123     - env:
124         - BUILDMAN="m68k"
125           TOOLCHAIN="m68k"
126     - env:
127         - BUILDMAN="mips"
128           TOOLCHAIN="mips"
129     - env:
130         - BUILDMAN="mpc512x"
131           TOOLCHAIN="ppc"
132     - env:
133         - BUILDMAN="mpc5xx"
134           TOOLCHAIN="ppc"
135     - env:
136         - BUILDMAN="mpc5xxx"
137           TOOLCHAIN="ppc"
138     - env:
139         - BUILDMAN="mpc8260"
140           TOOLCHAIN="ppc"
141     - env:
142         - BUILDMAN="mpc83xx"
143           TOOLCHAIN="ppc"
144     - env:
145         - BUILDMAN="mpc85xx -x freescale"
146           TOOLCHAIN="ppc"
147     - env:
148         - BUILDMAN="mpc85xx -x t208xrdb -x t4qds -x t102* -x p1_p2_rdb_pc -x p1010rdb -x corenet_ds -x b4860qds -x sbc8548 -x bsc91*"
149           TOOLCHAIN="ppc"
150     - env:
151         - BUILDMAN="t208xrdb t4qds t102*"
152           TOOLCHAIN="ppc"
153     - env:
154         - BUILDMAN="p1_p2_rdb_pc p1010rdb"
155           TOOLCHAIN="ppc"
156     - env:
157         - BUILDMAN="corenet_ds b4860qds sbc8548 bsc91*"
158           TOOLCHAIN="ppc"
159     - env:
160         - BUILDMAN="mpc86xx"
161           TOOLCHAIN="ppc"
162     - env:
163         - BUILDMAN="mpc8xx"
164           TOOLCHAIN="ppc"
165     - env:
166         - BUILDMAN="siemens"
167           TOOLCHAIN="arm"
168     - env:
169         - BUILDMAN="ti"
170           TOOLCHAIN="arm"
171     - env:
172         - BUILDMAN="aarch64"
173           TOOLCHAIN="aarch64"
174
175     # QA jobs for code analytics
176     # static code analysis with cppcheck (we can add --enable=all later)
177     - env:
178         - TEST_CMD="cppcheck --force --quiet --inline-suppr ."
179     # search for TODO within source tree
180     - env:
181         - TEST_CMD="grep -r TODO ."
182     # search for FIXME within source tree
183     - env:
184         - TEST_CMD="grep -r FIXME ."
185     # search for HACK within source tree and ignore HACKKIT board
186     - env:
187         - TEST_CMD="grep -r HACK . | grep -v HACKKIT"
188       script:
189         - grep -r HACK . | grep -v HACKKIT
190     # some statistics about the code base
191     - env:
192         - TEST_CMD="sloccount ."
193     # test/py
194     - env:
195         - TEST_CMD="./test/py/test.py --bd sandbox --build"
196
197 # TODO make it perfect ;-r