diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8a48a9721f6a38219e9982af4f575b27f203b73a..3e0dc41614e126badcdf47834ff8ce84c660ce19 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,4 +1,38 @@ -Rust rav1e image: +variables: + # Workaround a bug in Gitlab CI + DOCKER_TLS_CERTDIR: "" + +Docker build: + stage: build + tags: + - dind + - privileged + variables: + IMAGE_TAG: '1.37' + services: + - docker:dind + script: + - docker build ./rust-rav1e --build-arg IMAGE_TAG=$IMAGE_TAG + only: + - merge_requests + +Latest stable Rust: + stage: build + tags: + - dind + - privileged + variables: + IMAGE_TAG: '1.37' + services: + - docker:dind + script: + - docker build -t $CI_REGISTRY_IMAGE/rust-rav1e:$IMAGE_TAG ./rust-rav1e --build-arg IMAGE_TAG=$IMAGE_TAG + - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY + - docker push $CI_REGISTRY_IMAGE/rust-rav1e:$IMAGE_TAG + only: + - master + +Minimum supported Rust: stage: build tags: - dind @@ -8,7 +42,7 @@ Rust rav1e image: services: - docker:dind script: - - docker build -t $CI_REGISTRY_IMAGE/rust-rav1e:$IMAGE_TAG ./rust-rav1e + - docker build -t $CI_REGISTRY_IMAGE/rust-rav1e:$IMAGE_TAG ./rust-rav1e --build-arg IMAGE_TAG=$IMAGE_TAG - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY - docker push $CI_REGISTRY_IMAGE/rust-rav1e:$IMAGE_TAG only: diff --git a/rust-rav1e/Dockerfile b/rust-rav1e/Dockerfile index c2460af552119963ac2d5df47258655ef41084a4..f5e7b5804a63009951586d5369235c1ddc05c8df 100644 --- a/rust-rav1e/Dockerfile +++ b/rust-rav1e/Dockerfile @@ -1,54 +1,74 @@ -FROM rust:1.36 +ARG IMAGE_TAG + +FROM rust:${IMAGE_TAG}-buster + +ARG NASM_VERSION=2.14 +ARG KCOV_VERSION=36 +ARG AOM_VERSION=v1.0.0-errata1 +ARG DAV1D_VERSION=0.4.0 RUN apt-get update -qq && \ - apt-get install -qqy \ - autoconf \ - automake \ - autopoint \ - gettext \ - libtool-bin \ - bzip2 \ - flex \ - make \ - gcc \ - g++ \ - g++-multilib \ - git \ - gperf \ - patch \ - pkg-config \ - sed \ - unzip \ - wget \ - lzip \ - xz-utils \ - cmake \ - ninja-build \ - libclang-dev \ - clang \ - libelf-dev \ - libdw-dev \ - libiberty-dev \ - binutils-dev -RUN rustup component add clippy && \ - curl -L https://download.videolan.org/contrib/nasm/nasm-2.14.tar.gz | tar xvz && \ - cd nasm-2.14 && \ + apt-get install -qqy --no-install-recommends \ + autoconf \ + automake \ + autopoint \ + gettext \ + libtool-bin \ + bzip2 \ + flex \ + make \ + gcc \ + g++ \ + g++-multilib \ + git \ + gperf \ + patch \ + pkg-config \ + sed \ + unzip \ + wget \ + lzip \ + xz-utils \ + cmake \ + ninja-build \ + libclang-dev \ + clang \ + libelf-dev \ + libdw-dev \ + libiberty-dev \ + binutils-dev \ + meson && \ + rm -rf /var/lib/apt/lists/* +RUN curl -L "https://download.videolan.org/contrib/nasm/nasm-$NASM_VERSION.tar.gz" | tar xvz && \ + cd "nasm-$NASM_VERSION" && \ ./configure && make -j2 && make install && \ cd .. && \ - curl -L https://github.com/SimonKagstrom/kcov/archive/v36.tar.gz | tar xvz && \ - cd kcov-36 && \ + rm -rf "nasm-$NASM_VERSION" +RUN curl -L "https://github.com/SimonKagstrom/kcov/archive/v$KCOV_VERSION.tar.gz" | tar xvz && \ + cd "kcov-$KCOV_VERSION" && \ mkdir .build && cd .build && \ cmake -GNinja .. && \ ninja && ninja install && \ cd ../.. && \ - git clone --depth 1 -b v1.0.0-errata1 https://aomedia.googlesource.com/aom && \ + rm -rf "kcov-$KCOV_VERSION" +RUN git clone --depth 1 -b "$AOM_VERSION" https://aomedia.googlesource.com/aom && \ cd aom && \ mkdir -p .build && cd .build && \ cmake -GNinja .. \ - -DCMAKE_BUILD_TYPE=Release \ - -DENABLE_TESTS=0 \ - -DENABLE_DOCS=0 \ - -DCONFIG_LOWBITDEPTH=1 \ - -DCMAKE_INSTALL_PREFIX=/usr \ - -DCONFIG_PIC=1 && \ - ninja && ninja install + -DCMAKE_BUILD_TYPE=Release \ + -DENABLE_TESTS=0 \ + -DENABLE_DOCS=0 \ + -DCONFIG_LOWBITDEPTH=1 \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DCONFIG_PIC=1 && \ + ninja && ninja install && \ + cd ../.. && \ + rm -rf aom +RUN curl -L "https://code.videolan.org/videolan/dav1d/-/archive/$DAV1D_VERSION/dav1d-$DAV1D_VERSION.tar.gz" | tar xvz && \ + cd "dav1d-$DAV1D_VERSION" && \ + meson build --buildtype release && \ + ninja -C build install && \ + cd ../.. && \ + rm -rf "dav1d-$DAV1D_VERSION" +RUN rustup component add clippy rustfmt +RUN cargo install cargo-kcov