CTIMETEST: yes
BENCH: yes
ITERS: 2
- # We only need the top commit
- CIRRUS_CLONE_DEPTH: 1
+ MAKEFLAGS: -j2
cat_logs_snippet: &CAT_LOGS
always:
- test_logs_script:
+ cat_tests_log_script:
- cat tests.log || true
+ cat_exhaustive_tests_log_script:
- cat exhaustive_tests.log || true
+ cat_valgrind_ctime_test_log_script:
- cat valgrind_ctime_test.log || true
+ cat_bench_log_script:
- cat bench.log || true
on_failure:
- debug_output_script:
+ cat_config_log_script:
- cat config.log || true
+ cat_test_env_script:
- cat test_env.log || true
+ cat_ci_env_script:
- env
+merge_base_script_snippet: &MERGE_BASE
+ merge_base_script:
+ - if [ "$CIRRUS_PR" = "" ]; then exit 0; fi
+ - git fetch $CIRRUS_REPO_CLONE_URL $CIRRUS_BASE_BRANCH
+ - git config --global user.name "ci"
+ - git merge FETCH_HEAD # Merge base to detect silent merge conflicts
+
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.
CC: gcc
- env:
CC: clang
+ << : *MERGE_BASE
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:
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
+ << : *MERGE_BASE
test_script:
- - nix-shell ci/shell-i686.nix --run ./ci/cirrus.sh
+ - ./ci/cirrus.sh
<< : *CAT_LOGS
task:
env:
HOMEBREW_NO_AUTO_UPDATE: 1
HOMEBREW_NO_INSTALL_CLEANUP: 1
+ # Cirrus gives us a fixed number of 12 virtual CPUs. Not that we even have that many jobs at the moment...
+ MAKEFLAGS: -j13
matrix:
<< : *ENV_MATRIX
matrix:
- brew link valgrind
brew_script:
- brew install automake libtool gmp gcc@9
+ << : *MERGE_BASE
test_script:
- ./ci/cirrus.sh
<< : *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:
EXPERIMENTAL: yes
SCHNORRSIG: yes
CTIMETEST: no
+ << : *MERGE_BASE
test_script:
# https://sourceware.org/bugzilla/show_bug.cgi?id=27008
- rm /etc/ld.so.cache
./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" \
--with-valgrind="$WITH_VALGRIND" \
--host="$HOST" $EXTRAFLAGS
+# We have set "-j<n>" in MAKEFLAGS.
+make
+
+# Print information about binaries so that we can see that the architecture is correct
+file *tests || true
+file bench_* || true
+file .libs/* || true
+
if [ -n "$BUILD" ]
then
- make -j2 "$BUILD"
+ make "$BUILD"
fi
if [ "$RUN_VALGRIND" = "yes" ]
then
- make -j2
# the `--error-exitcode` is required to make the test fail if valgrind found errors, otherwise it'll return 0 (https://www.valgrind.org/docs/manual/manual-core.html)
valgrind --error-exitcode=42 ./tests 16
valgrind --error-exitcode=42 ./exhaustive_tests
if [ -n "$QEMU_CMD" ]
then
- make -j2
$QEMU_CMD ./tests 16
$QEMU_CMD ./exhaustive_tests
fi
+++ /dev/null
-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
--- /dev/null
+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 \
+ git ca-certificates \
+ 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
+++ /dev/null
-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
+++ /dev/null
-{ 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)
- '';
-}
+++ /dev/null
-let
- pkgs = (import <nixpkgs> {}).pkgsi686Linux;
-in
-import ./mkshell.nix { inherit pkgs; }
+++ /dev/null
-let
- pkgs = (import <nixpkgs> {});
-in
-import ./mkshell.nix { inherit pkgs; }