ci: Switch all Linux builds to Debian

The experiment of using Nix Shell was not really successful. Most
notably, Nix uses a bunch of wrapper scripts around compilers, which
make the build much less "pure". This may be useful but it's exactly
not what we want for CI. In particular, this resulted in gcc being used
for the "clang" builds because a wrapper script redefined the CC env
variable.

This now builds a single docker image (Debian) for all architectures
that we test in CI on Linux.
This commit is contained in:
Tim Ruffing 2021-02-26 15:52:40 +01:00
parent 7d3497cdc4
commit f24e122d13
8 changed files with 22 additions and 52 deletions

View File

@ -33,9 +33,9 @@ cat_logs_snippet: &CAT_LOGS
- env
task:
name: "x86_64: Linux (Alpine Linux, Nix Shell)"
name: "x86_64: Linux (Debian stable)"
container:
dockerfile: ci/linux-nixos.Dockerfile
dockerfile: ci/linux-debian.Dockerfile
# Reduce number of CPUs to be able to do more builds in parallel.
cpu: 1
# More than enough for our scripts.
@ -82,13 +82,13 @@ task:
- env:
CC: clang
test_script:
- nix-shell ci/shell.nix --run ./ci/cirrus.sh
- ./ci/cirrus.sh
<< : *CAT_LOGS
task:
name: "i686: Linux (Alpine Linux, Nix Shell)"
name: "i686: Linux (Debian stable)"
container:
dockerfile: ci/linux-nixos.Dockerfile
dockerfile: ci/linux-debian.Dockerfile
cpu: 1
memory: 1G
env:
@ -99,16 +99,16 @@ task:
SCHNORRSIG: yes
matrix:
- env:
CC: gcc
CC: i686-linux-gnu-gcc
- env:
CC: clang
CC: clang --target=i686-pc-linux-gnu -isystem /usr/i686-linux-gnu/include
matrix:
- env:
BIGNUM: gmp
- env:
BIGNUM: no
test_script:
- nix-shell ci/shell-i686.nix --run ./ci/cirrus.sh
- ./ci/cirrus.sh
<< : *CAT_LOGS
task:
@ -168,9 +168,9 @@ task:
<< : *CAT_LOGS
task:
name: "s390x (big-endian): Linux (Debian QEMU)"
name: "s390x (big-endian): Linux (Debian stable, QEMU)"
container:
dockerfile: ci/linux-debian-s390-qemu.Dockerfile
dockerfile: ci/linux-debian.Dockerfile
cpu: 1
memory: 1G
env:

View File

@ -12,10 +12,6 @@ valgrind --version || true
./autogen.sh
# Nix doesn't store GNU file in /usr/bin, see https://lists.gnu.org/archive/html/bug-libtool/2015-09/msg00000.html .
# The -i'' is necessary for macOS portability, see https://stackoverflow.com/a/4247319 .
sed -i'' -e 's@/usr/bin/file@$(which file)@g' configure
./configure \
--enable-experimental="$EXPERIMENTAL" \
--with-test-override-wide-multiply="$WIDEMUL" --with-bignum="$BIGNUM" --with-asm="$ASM" \

View File

@ -1,6 +0,0 @@
FROM debian
RUN dpkg --add-architecture s390x
RUN apt-get update
RUN apt-get install --no-install-recommends --no-upgrade -y make automake libtool
RUN apt-get install --no-install-recommends --no-upgrade -y gcc-s390x-linux-gnu libc6-dev-s390x-cross qemu-user libc6:s390x

View File

@ -0,0 +1,12 @@
FROM debian:stable
RUN dpkg --add-architecture i386
RUN dpkg --add-architecture s390x
RUN apt-get update
# dkpg-dev: to make pkg-config work in cross-builds
RUN apt-get install --no-install-recommends --no-upgrade -y \
make automake libtool pkg-config dpkg-dev valgrind qemu-user \
gcc clang libc6-dbg libgmp-dev \
gcc-i686-linux-gnu libc6-dev-i386-cross libc6-dbg:i386 libgmp-dev:i386 \
gcc-s390x-linux-gnu libc6-dev-s390x-cross libc6-dbg:s390x

View File

@ -1,12 +0,0 @@
FROM nixos/nix
COPY ci/shell.nix /tmp
COPY ci/shell-i686.nix /tmp
RUN nix-channel --remove nixpkgs
RUN nix-channel --add https://nixos.org/channels/nixos-20.09 nixpkgs
RUN nix-channel --update
# Run dummy command "true" in the nix-shell just to get the packages prepared.
RUN nix-shell /tmp/shell.nix --command true
RUN nix-shell /tmp/shell-i686.nix --command true

View File

@ -1,12 +0,0 @@
{ pkgs }:
with pkgs;
mkShell {
buildInputs = [
bash file pkgconfig autoconf automake libtool gmp valgrind clang gcc
];
shellHook = ''
echo Running nix-shell with nixpkgs version: $(nix eval --raw nixpkgs.lib.version)
'';
}

View File

@ -1,4 +0,0 @@
let
pkgs = (import <nixpkgs> {}).pkgsi686Linux;
in
import ./mkshell.nix { inherit pkgs; }

View File

@ -1,4 +0,0 @@
let
pkgs = (import <nixpkgs> {});
in
import ./mkshell.nix { inherit pkgs; }