sccn / liblsl

C++ lsl library for multi-modal time-synched data transmission over the local network
Other
107 stars 63 forks source link

Remove Ubuntu 16.04, migrate Ubuntu 18.04 to docker builds. #131

Closed tstenner closed 3 years ago

tstenner commented 3 years ago

Binaries produced by the preinstalled toolchain depend on libgcc_s1 which isn't in the default repositories (many thanks to @tobiasherzke for the detailed explanation in #129).

This PR adds a config field docker that, when set, runs all steps in this container. For Ubuntu 18.04 builds, it selects the ubuntu-latest build image and then runs the rest of the build in the ubuntu:18.04 docker container. This is less flexible than @tobiasherzke's approach, but requires only minimal changes to the CI config and is ~4x faster.

tobiasherzke commented 3 years ago

This PR adds a config field docker that, when set, runs all steps in this container. For Ubuntu 18.04 builds, it selects the ubuntu-latest build image and then runs the rest of the build in the ubuntu:18.04 docker container. This is less flexible than @tobiasherzke's approach, but requires only minimal changes to the CI config and is ~4x faster.

Nice solution! I was not aware of the container config field. I will try to make use of it for my ARM builds, but there I have to prepare the host to be able to execute ARM CPU instructions on the Intel CPU.

I think the speed difference that you see comes from not having to emulate another CPU architecture. I see a similar difference between the ARM builds and the native build in a container. This run of github actions has all 3 in one matrix: https://github.com/HoerTech-gGmbH/liblsl/actions/runs/933023560 The difference there is even 9x to 10x.