From f24e122d13db7061b1086ddfd21d3a1c5294213b Mon Sep 17 00:00:00 2001 From: Tim Ruffing Date: Fri, 26 Feb 2021 15:52:40 +0100 Subject: [PATCH] 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. --- .cirrus.yml | 20 ++++++++++---------- ci/cirrus.sh | 4 ---- ci/linux-debian-s390-qemu.Dockerfile | 6 ------ ci/linux-debian.Dockerfile | 12 ++++++++++++ ci/linux-nixos.Dockerfile | 12 ------------ ci/mkshell.nix | 12 ------------ ci/shell-i686.nix | 4 ---- ci/shell.nix | 4 ---- 8 files changed, 22 insertions(+), 52 deletions(-) delete mode 100644 ci/linux-debian-s390-qemu.Dockerfile create mode 100644 ci/linux-debian.Dockerfile delete mode 100644 ci/linux-nixos.Dockerfile delete mode 100644 ci/mkshell.nix delete mode 100644 ci/shell-i686.nix delete mode 100644 ci/shell.nix diff --git a/.cirrus.yml b/.cirrus.yml index 3b7e5f2..ac33507 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -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: diff --git a/ci/cirrus.sh b/ci/cirrus.sh index e10037a..afd72b4 100755 --- a/ci/cirrus.sh +++ b/ci/cirrus.sh @@ -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" \ diff --git a/ci/linux-debian-s390-qemu.Dockerfile b/ci/linux-debian-s390-qemu.Dockerfile deleted file mode 100644 index d527be5..0000000 --- a/ci/linux-debian-s390-qemu.Dockerfile +++ /dev/null @@ -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 diff --git a/ci/linux-debian.Dockerfile b/ci/linux-debian.Dockerfile new file mode 100644 index 0000000..8fe50f1 --- /dev/null +++ b/ci/linux-debian.Dockerfile @@ -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 diff --git a/ci/linux-nixos.Dockerfile b/ci/linux-nixos.Dockerfile deleted file mode 100644 index 0017073..0000000 --- a/ci/linux-nixos.Dockerfile +++ /dev/null @@ -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 diff --git a/ci/mkshell.nix b/ci/mkshell.nix deleted file mode 100644 index 3886b55..0000000 --- a/ci/mkshell.nix +++ /dev/null @@ -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) - ''; -} diff --git a/ci/shell-i686.nix b/ci/shell-i686.nix deleted file mode 100644 index 12528dd..0000000 --- a/ci/shell-i686.nix +++ /dev/null @@ -1,4 +0,0 @@ -let - pkgs = (import {}).pkgsi686Linux; -in -import ./mkshell.nix { inherit pkgs; } diff --git a/ci/shell.nix b/ci/shell.nix deleted file mode 100644 index e83dc87..0000000 --- a/ci/shell.nix +++ /dev/null @@ -1,4 +0,0 @@ -let - pkgs = (import {}); -in -import ./mkshell.nix { inherit pkgs; }