Skip to content

Commit

Permalink
Docker: add Alpine to new docker setup (ccache#606)
Browse files Browse the repository at this point in the history
  • Loading branch information
AlexanderLanin authored Jun 17, 2020
1 parent e071bcf commit c51bfaa
Show file tree
Hide file tree
Showing 5 changed files with 77 additions and 30 deletions.
18 changes: 18 additions & 0 deletions buildenv/alpine-3.12/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
FROM alpine:3.12

RUN apk add --no-cache \
asciidoc \
bash \
ccache \
clang \
cmake \
elfutils \
g++ \
gcc \
libc-dev \
make \
perl \
zstd-dev

# redirect all compilers to ccache
RUN for t in gcc g++ cc c++ clang clang++; do ln -vs /usr/bin/ccache /usr/local/bin/$t; done
22 changes: 22 additions & 0 deletions buildenv/alpine-3.4/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Released 2016, this is the first release to contain cmake >= 3.4.3

# Note: While alpine 3.4 runs fine, cmake 3.8.1 reports skipped tests as failures while cmake 3.9.5 reports them as skipped.
# So alpine 3.7 is the first version to report exit code 0. Maybe install new cmake manually here?

FROM alpine:3.4

RUN apk add --no-cache \
asciidoc \
bash \
ccache \
# clang \
cmake \
# elfutils \ (available since Alpine 3.7)
g++ \
gcc \
libc-dev \
make \
perl

# redirect all compilers to ccache
RUN for t in gcc g++ cc c++ clang clang++; do ln -vs /usr/bin/ccache /usr/local/bin/$t; done
12 changes: 0 additions & 12 deletions buildenv/alpine/Dockerfile

This file was deleted.

5 changes: 2 additions & 3 deletions cmake/StandardWarnings.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -75,10 +75,8 @@ if(WARNINGS_AS_ERRORS)
endif()

if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
# Exact version or reason unknown, discovered in Ubuntu 14 docker test with clang 3.4
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.0)
# reserved-id-macro issued by clang 3.6 - 3.9 for libb2 blake2.h
set(CLANG_GCC_WARNINGS ${CLANG_GCC_WARNINGS} -Qunused-arguments -Wno-error=unreachable-code -Wno-error=reserved-id-macro)
set(CLANG_GCC_WARNINGS ${CLANG_GCC_WARNINGS} -Qunused-arguments -Wno-error=unreachable-code)
endif()

target_compile_options(
Expand All @@ -91,6 +89,7 @@ if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
-Wno-conversion
-Wno-disabled-macro-expansion
-Wno-documentation-unknown-command
-Wno-error=reserved-id-macro # libb2 blake2.h
-Wno-exit-time-destructors
-Wno-format-nonliteral
-Wno-global-constructors
Expand Down
50 changes: 35 additions & 15 deletions test-all-systems.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,26 +6,46 @@
# Runtime is roughly 1 minute per line (depending on system).
# First run takes about 1 additional minute per docker image (depending on internet connection).

# TODO: store docker images in (public) repository.
# TODO: use ccache within docker and preserve the cache.
# That would make this script really fast and usable for small iterations!
# Note: Currently this is more a reference on how to run each instance,
# instead of running this entire script at once. See next steps.

# Next steps:
# * run compilation, tests and/or docker instances in parallel to improve runtime.
# * improve detection of failures so this script can be executed as a whole (see Note in alpine 3.4 Dockerfile).

echo "Warning: Docker support is rather experimental\n"

#CC=gcc CXX=g++ ./docker.sh debian-9-stretch
#CC=clang CXX=clang++ ./docker.sh debian-9-stretch

CC=gcc CXX=g++ ./docker.sh debian-10-buster
CC=clang CXX=clang++ ./docker.sh debian-10-buster
# Debian

# See https://github.com/ccache/ccache/issues/602
#CC=gcc CXX=g++ ./docker.sh debian-9-stretch
#CC=clang CXX=clang++ ./docker.sh debian-9-stretch

CC=gcc CXX=g++ ./docker.sh debian-10-buster
CC=clang CXX=clang++ ./docker.sh debian-10-buster


# Ubuntu (ancient, old and latest)

# zstd and libb2 not available for Ubuntu 14.
CC=gcc CXX=g++ CMAKE_PARAMS="-DUSE_LIBZSTD_FROM_INTERNET=ON -DUSE_LIBB2_FROM_INTERNET=ON" ./docker.sh ubuntu-14-trusty

# See https://github.com/ccache/ccache/issues/601
#CC=clang CXX=clang++ CMAKE_PARAMS="-DUSE_LIBZSTD_FROM_INTERNET=ON -DUSE_LIBB2_FROM_INTERNET=ON" ./docker.sh ubuntu-14-tusty

CC=gcc CXX=g++ ./docker.sh ubuntu-16-xenial
CC=clang CXX=clang++ ./docker.sh ubuntu-16-xenial

# zstd and libb2 not available for Ubuntu 14.
CC=gcc CXX=g++ CMAKE_PARAMS="-DUSE_LIBZSTD_FROM_INTERNET=ON -DUSE_LIBB2_FROM_INTERNET=ON" ./docker.sh ubuntu-14-trusty
CC=gcc CXX=g++ CMAKE_PARAMS="-DUSE_LIBZSTD_FROM_INTERNET=ON" ./docker.sh ubuntu-20-focal
CC=clang CXX=clang++ CMAKE_PARAMS="-DUSE_LIBZSTD_FROM_INTERNET=ON" ./docker.sh ubuntu-20-focal

# See https://github.com/ccache/ccache/issues/601
#CC=clang CXX=clang++ CMAKE_PARAMS="-DUSE_LIBZSTD_FROM_INTERNET=ON -DUSE_LIBB2_FROM_INTERNET=ON" ./docker.sh ubuntu-14-tusty

CC=gcc CXX=g++ ./docker.sh ubuntu-16-xenial
CC=clang CXX=clang++ ./docker.sh ubuntu-16-xenial
# Alpine (old and latest)

CC=gcc CXX=g++ CMAKE_PARAMS="-DUSE_LIBZSTD_FROM_INTERNET=ON" ./docker.sh ubuntu-20-focal
CC=clang CXX=clang++ CMAKE_PARAMS="-DUSE_LIBZSTD_FROM_INTERNET=ON" ./docker.sh ubuntu-20-focal
CC=gcc CXX=g++ CMAKE_PARAMS="-DUSE_LIBZSTD_FROM_INTERNET=ON -DUSE_LIBB2_FROM_INTERNET=ON" ./docker.sh alpine-3.4
# Clang is not capable to compile libzstd from internet before alpine 3.12 (Some SSE2 error regarding missing file emmintrin.h)
#CC=clang CXX=clang++ CMAKE_PARAMS="-DUSE_LIBZSTD_FROM_INTERNET=ON -DUSE_LIBB2_FROM_INTERNET=ON" ./docker.sh alpine-3.4
CC=clang CXX=clang++ CMAKE_PARAMS="-DUSE_LIBZSTD_FROM_INTERNET=ON -DUSE_LIBB2_FROM_INTERNET=ON" ./docker.sh alpine-3.12
CC=gcc CXX=g++ CMAKE_PARAMS="-DUSE_LIBB2_FROM_INTERNET=ON" ./docker.sh alpine-3.12
CC=clang CXX=clang++ CMAKE_PARAMS="-DUSE_LIBB2_FROM_INTERNET=ON" ./docker.sh alpine-3.12

0 comments on commit c51bfaa

Please sign in to comment.