From d514bacb4083e4fa8ed8d3a96381474a8819a53d Mon Sep 17 00:00:00 2001 From: Radostin Stoyanov Date: Sat, 4 Dec 2021 16:31:34 +0000 Subject: [PATCH] ci: Run cross compile with debian testing Debian testing has newer compiler version and running cross compilation tests would allow us to catch any compilation errors early. Signed-off-by: Radostin Stoyanov --- .github/workflows/cross-compile.yml | 11 ++++- .../Dockerfile.aarch64-testing-cross.hdr | 5 +++ .../Dockerfile.aarch64-testing-cross.tmpl | 1 + .../build/Dockerfile.armv7-testing-cross.hdr | 6 +++ .../build/Dockerfile.armv7-testing-cross.tmpl | 1 + .../Dockerfile.mips64el-testing-cross.hdr | 6 +++ .../Dockerfile.mips64el-testing-cross.tmpl | 1 + .../build/Dockerfile.ppc64-testing-cross.hdr | 5 +++ .../build/Dockerfile.ppc64-testing-cross.tmpl | 1 + scripts/build/Dockerfile.testing-cross.tmpl | 42 +++++++++++++++++++ scripts/build/Makefile | 4 +- 11 files changed, 81 insertions(+), 2 deletions(-) create mode 100644 scripts/build/Dockerfile.aarch64-testing-cross.hdr create mode 120000 scripts/build/Dockerfile.aarch64-testing-cross.tmpl create mode 100644 scripts/build/Dockerfile.armv7-testing-cross.hdr create mode 120000 scripts/build/Dockerfile.armv7-testing-cross.tmpl create mode 100644 scripts/build/Dockerfile.mips64el-testing-cross.hdr create mode 120000 scripts/build/Dockerfile.mips64el-testing-cross.tmpl create mode 100644 scripts/build/Dockerfile.ppc64-testing-cross.hdr create mode 120000 scripts/build/Dockerfile.ppc64-testing-cross.tmpl create mode 100644 scripts/build/Dockerfile.testing-cross.tmpl diff --git a/.github/workflows/cross-compile.yml b/.github/workflows/cross-compile.yml index c6745d43e..eec6eb577 100644 --- a/.github/workflows/cross-compile.yml +++ b/.github/workflows/cross-compile.yml @@ -8,7 +8,16 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - target: [armv7-stable-cross, aarch64-stable-cross, ppc64-stable-cross, mips64el-stable-cross] + target: [ + armv7-stable-cross, + armv7-testing-cross, + aarch64-stable-cross, + aarch64-testing-cross, + ppc64-stable-cross, + ppc64-testing-cross, + mips64el-stable-cross, + mips64el-testing-cross + ] steps: - uses: actions/checkout@v2 diff --git a/scripts/build/Dockerfile.aarch64-testing-cross.hdr b/scripts/build/Dockerfile.aarch64-testing-cross.hdr new file mode 100644 index 000000000..c61d2af27 --- /dev/null +++ b/scripts/build/Dockerfile.aarch64-testing-cross.hdr @@ -0,0 +1,5 @@ +FROM docker.io/dockcross/base:latest + +ENV ARCH=aarch64 +ENV DEBIAN_ARCH=arm64 +ENV CROSS_TRIPLET=aarch64-linux-gnu diff --git a/scripts/build/Dockerfile.aarch64-testing-cross.tmpl b/scripts/build/Dockerfile.aarch64-testing-cross.tmpl new file mode 120000 index 000000000..c1dd38b21 --- /dev/null +++ b/scripts/build/Dockerfile.aarch64-testing-cross.tmpl @@ -0,0 +1 @@ +Dockerfile.testing-cross.tmpl \ No newline at end of file diff --git a/scripts/build/Dockerfile.armv7-testing-cross.hdr b/scripts/build/Dockerfile.armv7-testing-cross.hdr new file mode 100644 index 000000000..f96dc51f7 --- /dev/null +++ b/scripts/build/Dockerfile.armv7-testing-cross.hdr @@ -0,0 +1,6 @@ +FROM docker.io/dockcross/base:latest + +ENV ARCH=arm +ENV SUBARCH=armv7 +ENV DEBIAN_ARCH=armhf +ENV CROSS_TRIPLET=arm-linux-gnueabihf diff --git a/scripts/build/Dockerfile.armv7-testing-cross.tmpl b/scripts/build/Dockerfile.armv7-testing-cross.tmpl new file mode 120000 index 000000000..c1dd38b21 --- /dev/null +++ b/scripts/build/Dockerfile.armv7-testing-cross.tmpl @@ -0,0 +1 @@ +Dockerfile.testing-cross.tmpl \ No newline at end of file diff --git a/scripts/build/Dockerfile.mips64el-testing-cross.hdr b/scripts/build/Dockerfile.mips64el-testing-cross.hdr new file mode 100644 index 000000000..e78c94aa5 --- /dev/null +++ b/scripts/build/Dockerfile.mips64el-testing-cross.hdr @@ -0,0 +1,6 @@ +FROM dockcross/base:latest + +ENV ARCH=mips +ENV SUBARCH=mips +ENV DEBIAN_ARCH=mips64el +ENV CROSS_TRIPLET=mips64el-linux-gnuabi64 diff --git a/scripts/build/Dockerfile.mips64el-testing-cross.tmpl b/scripts/build/Dockerfile.mips64el-testing-cross.tmpl new file mode 120000 index 000000000..c1dd38b21 --- /dev/null +++ b/scripts/build/Dockerfile.mips64el-testing-cross.tmpl @@ -0,0 +1 @@ +Dockerfile.testing-cross.tmpl \ No newline at end of file diff --git a/scripts/build/Dockerfile.ppc64-testing-cross.hdr b/scripts/build/Dockerfile.ppc64-testing-cross.hdr new file mode 100644 index 000000000..38547ac55 --- /dev/null +++ b/scripts/build/Dockerfile.ppc64-testing-cross.hdr @@ -0,0 +1,5 @@ +FROM dockcross/base:latest + +ENV ARCH=ppc64 +ENV DEBIAN_ARCH=ppc64el +ENV CROSS_TRIPLET=powerpc64le-linux-gnu diff --git a/scripts/build/Dockerfile.ppc64-testing-cross.tmpl b/scripts/build/Dockerfile.ppc64-testing-cross.tmpl new file mode 120000 index 000000000..c1dd38b21 --- /dev/null +++ b/scripts/build/Dockerfile.ppc64-testing-cross.tmpl @@ -0,0 +1 @@ +Dockerfile.testing-cross.tmpl \ No newline at end of file diff --git a/scripts/build/Dockerfile.testing-cross.tmpl b/scripts/build/Dockerfile.testing-cross.tmpl new file mode 100644 index 000000000..1d5565310 --- /dev/null +++ b/scripts/build/Dockerfile.testing-cross.tmpl @@ -0,0 +1,42 @@ +COPY scripts/ci/apt-install /bin/apt-install + +# Add the cross compiler sources +RUN echo "deb http://deb.debian.org/debian/ testing main" >> /etc/apt/sources.list && \ + dpkg --add-architecture ${DEBIAN_ARCH} + +RUN apt-install \ + crossbuild-essential-${DEBIAN_ARCH} \ + libc6-dev-${DEBIAN_ARCH}-cross \ + libc6-${DEBIAN_ARCH}-cross \ + libbz2-dev:${DEBIAN_ARCH} \ + libexpat1-dev:${DEBIAN_ARCH} \ + ncurses-dev:${DEBIAN_ARCH} \ + libssl-dev:${DEBIAN_ARCH} \ + protobuf-c-compiler \ + protobuf-compiler \ + python3-protobuf \ + libnl-3-dev:${DEBIAN_ARCH} \ + libprotobuf-dev:${DEBIAN_ARCH} \ + libnet-dev:${DEBIAN_ARCH} \ + libprotobuf-c-dev:${DEBIAN_ARCH} \ + libcap-dev:${DEBIAN_ARCH} \ + libaio-dev:${DEBIAN_ARCH} \ + libnl-route-3-dev:${DEBIAN_ARCH} + +ENV CROSS_COMPILE=${CROSS_TRIPLET}- \ + CROSS_ROOT=/usr/${CROSS_TRIPLET} \ + AS=/usr/bin/${CROSS_TRIPLET}-as \ + AR=/usr/bin/${CROSS_TRIPLET}-ar \ + CC=/usr/bin/${CROSS_TRIPLET}-gcc \ + CPP=/usr/bin/${CROSS_TRIPLET}-cpp \ + CXX=/usr/bin/${CROSS_TRIPLET}-g++ \ + LD=/usr/bin/${CROSS_TRIPLET}-ld \ + FC=/usr/bin/${CROSS_TRIPLET}-gfortran + +ENV PATH="${PATH}:${CROSS_ROOT}/bin" \ + PKG_CONFIG_PATH=/usr/lib/${CROSS_TRIPLET}/pkgconfig + +COPY . /criu +WORKDIR /criu + +RUN make mrproper && date && make -j $(nproc) zdtm && date diff --git a/scripts/build/Makefile b/scripts/build/Makefile index a436c2839..b24fc80ea 100644 --- a/scripts/build/Makefile +++ b/scripts/build/Makefile @@ -1,5 +1,7 @@ ARCHES := x86_64 fedora-asan fedora-rawhide centos7 armv7hf centos8 -NON_CLANG := armv7-stable-cross aarch64-stable-cross ppc64-stable-cross mips64el-stable-cross +STABLE_CROSS_ARCHES := armv7-stable-cross aarch64-stable-cross ppc64-stable-cross mips64el-stable-cross +TESTING_CROSS_ARCHES := armv7-testing-cross aarch64-testing-cross ppc64-testing-cross mips64el-testing-cross +NON_CLANG := $(TESTING_CROSS_ARCHES) $(STABLE_CROSS_ARCHES) CREATE_DOCKERFILES := $(ARCHES) $(NON_CLANG) TARGETS := $(ARCHES) alpine archlinux TARGETS_CLANG := $(addsuffix $(TARGETS),-clang)