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:
parent
7d3497cdc4
commit
f24e122d13
20
.cirrus.yml
20
.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:
|
||||
|
|
|
@ -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" \
|
||||
|
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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)
|
||||
'';
|
||||
}
|
|
@ -1,4 +0,0 @@
|
|||
let
|
||||
pkgs = (import <nixpkgs> {}).pkgsi686Linux;
|
||||
in
|
||||
import ./mkshell.nix { inherit pkgs; }
|
|
@ -1,4 +0,0 @@
|
|||
let
|
||||
pkgs = (import <nixpkgs> {});
|
||||
in
|
||||
import ./mkshell.nix { inherit pkgs; }
|
Loading…
Reference in New Issue