Skip to content

Update and clean up Ubuntu docker files #10

@mpg

Description

@mpg

This issue collects a number of updates and cleanups that have been pending for some time. See "possible follow-ups" below for a non-exhaustive list of things that are out of scope of this PR.

  • Remove the Ubuntu 17.10 image - this has never been used on the CI and is no longer supported. Just remove the file. (Add mypy and Jinja2 to the Docker images #16)
  • Remove the Debian images - they're not used by the CI and probably very out of date. (They're referenced by two variables in vars/common.groovy but those variables are no longer used - remove them too.) )(Add mypy and Jinja2 to the Docker images #16)
  • Update the Docker Readme and run.sh script to include --security-opt seccomp=unconfined (see below).
  • Update the value of the ARMLMD_LICENSE_FILE environment variable in the two remaining images. The correct value can be found in vars/gen_jobs.groovy which can then be adapted to no longer set that variable (and the corresponding comments removed). (See on the old repo: 147 to apply and 149 to undo.)
  • Align the structure and contents of the Ubuntu 18.04 image with that of the Ubuntu 16.04 image (see below).

Seccomp: In dev_envs/docker_files/run.sh, add --security-opt seccomp=unconfined to the docker run line, and add an explanation about it in dev_envs/docker_files/README.md in the section **run**, for example (from a previous PR - 130 in the old repo):

Note, to run the `all.sh "test_zeroize"` tests you need to pass the additional parameters ` --cap-add=SYS_PTRACE --security-opt seccomp=unconfined` to allow ASLR to be disabled for the zeroize test. Without these parameters, this test will always fail.

(Experimentally, this is not needed seccomp=unconfined is not needed.)

Align 18.04 with 16.04: The 16.04 docker file has been cleaned up recently (192 in the old repo). Before that clean up, the differences between the 16.04 and 18.04 files were as follows:

  • the base version obviously
  • inconsequential formatting changes - formatting has been re-done anyway
  • differences in handling yotta dependencies - yotta and all its dependencies have been removed anyway
  • the 16.04 image supports installing arm-linux-gnueabi-gcc and (the effect of) gcc-multilib and the 18.04 image doesn't - it should
  • the 16.04 image support abi-compliance-checker and the 18.04 image doesn't - it should

So, the 18.04 doesn't have anything extra compared to 16.04 that we'd need to preserve. As a consequence, the following strategy can be applied to align the images:

  1. Replace the 18.04 file with a copy of the 16.04 file and replace 16.04 with 18.04 up to an including the FROM ubuntu:16.04 line but not beyond. (One commit.)
  2. Go over the occurrences of 16.04 and [Uu]buntu in the rest of the file - those are comments indicating that we're working around some limitation (generally, packages version of some software too old) of 16.04. For each occurences, check if it also applies to 18.04 and update the comment and possibly the corresponding code. One commit for each of the following groups of occurrences:
    a. abi-compliance-checker and abi-dumper
    b. pip version
    c. libtasn1 for GnuTLS 3.6 (or 3.7 by the time with get there).

Note: making sure all.sh runs fully on the 18.04 image is out of scope for this issue.

Possible follow-ups: (no issues created for those as we might need to discuss the strategy first).

  • Start using 18.04 as the default for all.sh job in the Jenkns, and only keep a few selected jobs on 16.04 for compatibility. Chicken-and-egg problem: ideally, need to make sure all.sh passes on the Ubuntu 18.04 first, but since all.sh is so slow to run locally (8h+ on my laptop) it's better let the CI run it. Might need a companion PR to mbedtls if bugs are revealed (for example, new warnings from newer toolchains.)
  • Create ubuntu-20.04 file with the same procedure as for aligning the 18.04 image above: copy from 18.04, then look for occurrences of 18.04 or [Uu]buntu to adapt. Extend the dockerfile-builder to handle a 20.04 image as well. Ensure the image passes all.sh (see comments about using 18.04 on the CI above.)

Metadata

Metadata

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions