1# Declare python as our language. This way we get our chosen Python version,
2# and pip is available. Gcc and clang are available anyway.
3language: python
4python: 3.5
5sudo: false
6cache: ccache
7
8jobs:
9  include:
10    - name: basic checks and reference configurations
11      addons:
12        apt:
13          packages:
14          - gnutls-bin
15          - doxygen
16          - graphviz
17          - gcc-arm-none-eabi
18          - libnewlib-arm-none-eabi
19          - gcc-arm-linux-gnueabi
20          - libc6-dev-armel-cross
21      script:
22        - tests/scripts/all.sh -k 'check_*'
23        - tests/scripts/all.sh -k test_default_out_of_box
24        - tests/scripts/all.sh -k test_ref_configs
25        - tests/scripts/all.sh -k build_arm_linux_gnueabi_gcc_arm5vte build_arm_none_eabi_gcc_m0plus
26
27    - name: full configuration
28      os: linux
29      dist: focal
30      addons:
31        apt:
32          packages:
33          - clang-10
34          - gnutls-bin
35      script:
36        # Do a manual build+test sequence rather than using all.sh,
37        # because there's no all.sh component that does what we want,
38        # which is a build with Clang >= 10 and ASan, running all the SSL
39        # testing.
40        #   - The clang executable in the default PATH is Clang 7 on
41        #     Travis's focal instances, but we want Clang >= 10.
42        #   - Running all the SSL testing requires a specific set of
43        #     OpenSSL and GnuTLS versions and we don't want to bother
44        #     with those on Travis.
45        # So we explicitly select clang-10 as the compiler, and we
46        # have ad hoc restrictions on SSL testing based on what is
47        # passing at the time of writing. We will remove these limitations
48        # gradually.
49        - make generated_files
50        - make CC=clang-10 CFLAGS='-Werror -Wall -Wextra -fsanitize=address,undefined -fno-sanitize-recover=all -O2' LDFLAGS='-Werror -Wall -Wextra -fsanitize=address,undefined -fno-sanitize-recover=all'
51        - make test
52        - programs/test/selftest
53        - tests/scripts/test_psa_constant_names.py
54        - tests/ssl-opt.sh
55        # Modern OpenSSL does not support null ciphers.
56        - tests/compat.sh -p OpenSSL -e 'NULL'
57        - tests/scripts/travis-log-failure.sh
58        # GnuTLS supports CAMELLIA but compat.sh doesn't properly enable it.
59        - tests/compat.sh -p GnuTLS -e 'CAMELLIA'
60        - tests/scripts/travis-log-failure.sh
61        - tests/context-info.sh
62
63    - name: Windows
64      os: windows
65      # The language 'python' is currently unsupported on the
66      # Windows Build Environment. And 'generic' causes the job to get stuck
67      # on "Booting virtual machine".
68      language: c
69      before_install:
70        - choco install python --version=3.5.4
71      env:
72        # Add the directory where the Choco packages go
73        - PATH=/c/Python35:/c/Python35/Scripts:$PATH
74        - PYTHON=python.exe
75      script:
76        - type perl; perl --version
77        - type python; python --version
78        - scripts/make_generated_files.bat
79        # Logs appear out of sequence on Windows. Give time to catch up.
80        - sleep 5
81        - scripts/windows_msbuild.bat v141 # Visual Studio 2017
82        - visualc/VS2013/x64/Release/selftest.exe
83
84    - name: full configuration on arm64
85      os: linux
86      dist: focal
87      arch: arm64
88      addons:
89        apt:
90          packages:
91          - gcc
92      script:
93        # Do a manual build+test sequence rather than using all.sh.
94        #
95        # On Arm64 host of Travis CI, the time of `test_full_cmake_*` exceeds
96        # limitation of Travis CI. Base on `test_full_cmake_*`, we removed
97        # `ssl-opt.sh` and GnuTLS compat.sh here to meet the time limitation.
98        - scripts/config.py full
99        - make generated_files
100        - make CFLAGS='-O3 -Werror -fsanitize=address,undefined -fno-sanitize-recover=all' LDFLAGS='-Werror -fsanitize=address,undefined -fno-sanitize-recover=all'
101        - make test
102        - programs/test/selftest
103        - tests/scripts/test_psa_constant_names.py
104        # Modern OpenSSL does not support fixed ECDH or null ciphers.
105        - tests/compat.sh -p OpenSSL -e 'NULL\|ECDH_'
106        - tests/scripts/travis-log-failure.sh
107        - tests/context-info.sh
108
109    - name: full configuration(GnuTLS compat tests) on arm64
110      os: linux
111      dist: focal
112      arch: arm64
113      addons:
114        apt:
115          packages:
116          - clang
117          - gnutls-bin
118      script:
119        # Do a manual build+test sequence rather than using all.sh.
120        #
121        # On Arm64 host of Travis CI, the time of `test_full_cmake_*` exceeds
122        # limitation of Travis CI. Base on `test_full_cmake_*`, we removed
123        # `ssl-opt.sh` and OpenSSl compat.sh here to meet the time limitation.
124        - scripts/config.py full
125        - make generated_files
126        - make CC=clang CFLAGS='-O3 -Werror -fsanitize=address,undefined -fno-sanitize-recover=all' LDFLAGS='-Werror -fsanitize=address,undefined -fno-sanitize-recover=all'
127        # GnuTLS supports CAMELLIA but compat.sh doesn't properly enable it.
128        - tests/compat.sh -p GnuTLS -e 'CAMELLIA'
129        - tests/scripts/travis-log-failure.sh
130        - tests/context-info.sh
131
132after_failure:
133- tests/scripts/travis-log-failure.sh
134
135env:
136  global:
137    - SEED=1
138    - secure: "JECCru6HASpKZ0OLfHh8f/KXhKkdrCwjquZghd/qbA4ksxsWImjR7KEPERcaPndXEilzhDbKwuFvJiQX2duVgTGoq745YGhLZIjzo1i8tySkceCVd48P8WceYGz+F/bmY7r+m6fFNuxDSoGGSVeA4Lnjvmm8PFUP45YodDV9no4="
139
140install:
141  - $PYTHON scripts/min_requirements.py
142
143addons:
144  apt:
145    packages:
146    - gnutls-bin
147  coverity_scan:
148    project:
149      name: "ARMmbed/mbedtls"
150    notification_email: support-mbedtls@arm.com
151    build_command_prepend:
152    build_command: make
153    branch_pattern: coverity_scan
154