Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Backport 2.16: Rationalize Travis builds #3247

Conversation

gilles-peskine-arm
Copy link
Contributor

@gilles-peskine-arm gilles-peskine-arm commented Apr 27, 2020

Mostly straightforward backport of #3218. Differences:

  • There's no psa_constant_names in 2.16, and so no need for Python on Windows.

First backport #2821 because it's easier to keep all LTS branches in synch.

jainvikas8 and others added 20 commits April 27, 2020 09:14
Signed-off-by: Gilles Peskine <[email protected]>
"coverity_scan" branch is been removed as Travis shouldn't be
blocked from triggering it to run Coverity on it.

"development-psa" branch isn't used anymore and also it used to
depend on a private submodule which Travis would fail to get.

Signed-off-by: Gilles Peskine <[email protected]>
Almost everything the selftest program does is in the test suites. But
just in case run the selftest program itself once in the full
configuration, and once in the default configuration with ASan, in
addition to running it out of box.

Signed-off-by: Gilles Peskine <[email protected]>
Make it possible to use a compiler that isn't in $PATH, or that's
installed with a different name, or even a compiler for a different
target such as arm-linux-gnueabi.

Signed-off-by: Gilles Peskine <[email protected]>
In practice, we hardly ever get different outcomes, so there is no
gain in running tests with different compilers.

Experimentally, with the builds and tests we currently do and with the
compiler versions on a Travis Ubuntu 16.04, gcc jobs are significantly
faster than clang jobs (13 min vs 24 min). So use gcc.

Signed-off-by: Gilles Peskine <[email protected]>
Split the build between:
* Basic checks
* A build in the default configuration with extensive tests
* Builds in other configurations with less testing

The intent is to have one shorter job with basic tests, and two longer
jobs that take roughly the same amount of time (split as evenly as
possible while keeping an easy-to-understand separation).

Signed-off-by: Gilles Peskine <[email protected]>
Only this job uses doxygen and graphviz.

Signed-off-by: Gilles Peskine <[email protected]>
Declare an explicit Python version. Pick 3.5 which is the default
version on Ubuntu 16.04. This is necessary on Travis to have a working
pip for Python 3.

Install Pylint 2.4.4. There's nothing special about this version, it's
just the latest version.

Signed-off-by: Gilles Peskine <[email protected]>
Different releases have different sets of sanity checks. Keep the list
in one place, namely all.sh.

Signed-off-by: Gilles Peskine <[email protected]>
This way anything we change in all.sh, such as adding tests for
programs/*/*, will be reflected here.

The build now uses GCC instead of Clang, which doesn't make much
difference in practice. The build now enables ASan and UBSan.

The tests now run compat.sh and ssl-opt.sh fully.

Signed-off-by: Gilles Peskine <[email protected]>
For the one long job with ASan, use the full configuration.

We get more coverage this way, at the cost of a slightly longer
runtime which we can afford since the "enumerated configurations" job
is slower.

Add a default-configuration build to the "basic checks" job. This job
is fairly quick (no ASan, no SSL testing).

Signed-off-by: Gilles Peskine <[email protected]>
Some jobs don't actually test against GnuTLS, but all.sh checks its
presence in all test jobs, so it needs to be installed regardless.

Signed-off-by: Gilles Peskine <[email protected]>
Call all.sh to run all the available test_depends_* components. This
adds a run of depends-hashes.pl and depends-pkgalgs.pl.

Keep invoking test-ref-configs.pl rather than via all.sh so that it
doesn't run with ASan. This saves some time and ASan there doesn't
turn up much more than in the full config.

Signed-off-by: Gilles Peskine <[email protected]>
Add a baremetal build to Travis, to catch inadvertent dependencies on
platform functions.

The exact choice of target platform doesn't matter for this purpose.
Pick one that's present in all.sh, that uses a compiler that's
available in the Travis build environment (Ubuntu 16.04), and that
happens to be close to the Debian "armel" distribution.

Signed-off-by: Gilles Peskine <[email protected]>
Just do the default build with Clang and run the unit tests. The
objective is to have one build on a Unix-like platform other than
Linux.

Signed-off-by: Gilles Peskine <[email protected]>
Keep it simple and mostly non-parametrizable for now.
A path to Visual Studio 2017 is hard-coded.

Signed-off-by: Gilles Peskine <[email protected]>
Travis now offers a Windows environment. Do a build with Visual
Studio. This brings diversity into the Travis CI which otherwise only
uses GCC and Clang.

Signed-off-by: Gilles Peskine <[email protected]>
Only the Visual Studio 2017 toolset is currently preinstalled on Travis.
Use this, instead of our solution's default which is VS 2010.

Signed-off-by: Gilles Peskine <[email protected]>
@gilles-peskine-arm gilles-peskine-arm added mbed TLS team component-platform Portability layer and build scripts needs-ci Needs to pass CI tests labels Apr 27, 2020
Make the running time more even.

Signed-off-by: Gilles Peskine <[email protected]>
@gilles-peskine-arm gilles-peskine-arm added needs-review Every commit must be reviewed by at least two team members, and removed needs-ci Needs to pass CI tests labels Apr 27, 2020
mpg
mpg previously approved these changes Apr 28, 2020
Copy link
Contributor

@mpg mpg left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a faithful backport of #2821 and #3218, with the only difference being about psa_constant_names which doesn't exist in this branch.

@ronald-cron-arm
Copy link
Contributor

This backport looks good to me as well.

This is supposed to be for GCC (or a compiler with a compatible
command line interface) targeting arm-none-eabi, so name it
accordingly.

Signed-off-by: Gilles Peskine <[email protected]>
Otherwise the bignum assembly code is not used.

Signed-off-by: Gilles Peskine <[email protected]>
It's pretty fast and adds a little variety.

Signed-off-by: Gilles Peskine <[email protected]>
Just show the code size in the logs, for human consumption.

Signed-off-by: Gilles Peskine <[email protected]>
The Cortex-A build is similar to Debian armel. The Cortex-M0+ is a
handy point of comparison for code size. Put that one last so that
it's easy to find in the log.

Signed-off-by: Gilles Peskine <[email protected]>
@gilles-peskine-arm gilles-peskine-arm added the needs-ci Needs to pass CI tests label Apr 30, 2020
@mpg mpg removed the needs-ci Needs to pass CI tests label May 4, 2020
@mpg mpg added approved Design and code approved - may be waiting for CI or backports and removed needs-review Every commit must be reviewed by at least two team members, labels May 4, 2020
@gilles-peskine-arm gilles-peskine-arm merged commit 0f59341 into Mbed-TLS:mbedtls-2.16 May 4, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
approved Design and code approved - may be waiting for CI or backports component-platform Portability layer and build scripts
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants