diff --git a/azure-pipelines.yml b/azure-pipelines.yml index a2be052..0f1c66b 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -8,19 +8,49 @@ jobs: - job: displayName: Linux pool: - vmImage: 'ubuntu-16.04' + vmImage: 'ubuntu-18.04' + container: snmallocciteam/build_linux_x64:latest + strategy: matrix: - Clang-6 Debug: - CC: clang-6.0 - CXX: clang++-6.0 + Clang-7 Debug: + CC: clang-7 + CXX: clang++-7 BuildType: Debug SelfHost: false CMakeArgs: '' - Clang-6 Release: - CC: clang-6.0 - CXX: clang++-6.0 + Clang-7 Release: + CC: clang-7 + CXX: clang++-7 + BuildType: Release + SelfHost: false + CMakeArgs: '' + + Clang-8 Debug: + CC: clang-8 + CXX: clang++-8 + BuildType: Debug + SelfHost: false + CMakeArgs: '' + + Clang-8 Release: + CC: clang-8 + CXX: clang++-8 + BuildType: Release + SelfHost: false + CMakeArgs: '' + + Clang-9 Debug: + CC: clang-9 + CXX: clang++-9 + BuildType: Debug + SelfHost: false + CMakeArgs: '' + + Clang-9 Release: + CC: clang-9 + CXX: clang++-9 BuildType: Release SelfHost: false CMakeArgs: '' @@ -40,26 +70,21 @@ jobs: CMakeArgs: '' Self Host: - CC: clang-6.0 - CXX: clang++-6.0 + CC: clang-7 + CXX: clang++-7 BuildType: Debug SelfHost: true CMakeArgs: '' Cache Friendly: - CC: clang-6.0 - CXX: clang++-6.0 + CC: clang-7 + CXX: clang++-7 BuildType: Debug SelfHost: false CMakeArgs: '-DCACHE_FRIENDLY_OFFSET=64' steps: - script: | - sudo add-apt-repository ppa:ubuntu-toolchain-r/test - sudo apt-get update - sudo apt-get install -y ninja-build libc++-dev libc++abi-dev libc++abi1 libstdc++-7-dev gcc-8 g++-8 - # sudo apt-get install clang-6.0 clang++-6.0 - sudo update-alternatives --install /usr/bin/cc cc /usr/bin/$(CC) 100 sudo update-alternatives --set cc /usr/bin/$(CC) @@ -69,7 +94,7 @@ jobs: CMAKE_CXX_FLAGS="-std=c++17" if [[ "$CXX" == clang++* ]]; then CMAKE_CXX_FLAGS+=" -stdlib=libstdc++"; fi - displayName: 'Install Build Dependencies' + displayName: 'Select compiler version' - task: CMake@1 displayName: 'CMake .. $(CMakeArgs) -GNinja -DCMAKE_BUILD_TYPE=$(BuildType) -DCMAKE_CXX_FLAGS="$CMAKE_CXX_FLAGS" -DSNMALLOC_CI_BUILD=On -DSNMALLOC_RUST_SUPPORT=On' @@ -226,25 +251,20 @@ jobs: displayName: Format pool: vmImage: 'ubuntu-18.04' + container: snmallocciteam/build_linux_x64:latest steps: - script: | - set -eo pipefail - wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - - sudo apt-add-repository "deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-9 main" - sudo apt-get update - sudo apt-get install -y clang-format-9 clang-tidy-9 - sudo update-alternatives --install /usr/bin/clang-format clang-format /usr/bin/clang-format-9 100 + mkdir build + cd build + cmake -GNinja .. - displayName: 'Install clang' - - - task: CMake@1 - displayName: 'CMake ..' - inputs: - cmakeArgs: '..' + env: + CC: /usr/bin/gcc-8 + CXX: /usr/bin/g++-8 - script: | set -eo pipefail - make clangformat + ninja clangformat git diff --exit-code $(Build.SourceVersion) workingDirectory: build diff --git a/ci/linux_x64 b/ci/linux_x64 new file mode 100644 index 0000000..62b9a2d --- /dev/null +++ b/ci/linux_x64 @@ -0,0 +1,16 @@ +FROM ubuntu:18.04 + +RUN apt update \ + && apt install -y software-properties-common \ + && add-apt-repository ppa:ubuntu-toolchain-r/test \ + && apt update \ + && apt install --no-install-recommends -y sudo cmake ninja-build git \ + && apt install --no-install-recommends -y g++-8 \ + && apt install --no-install-recommends -y clang++-7 \ + && apt install --no-install-recommends -y clang++-8 \ + && apt install --no-install-recommends -y clang++-9 \ + && apt install --no-install-recommends -y clang-format-9 clang-tidy-9 \ + && update-alternatives --install /usr/bin/clang-format clang-format /usr/bin/clang-format-9 100 \ + && apt remove -y software-properties-common \ + && apt -y autoremove \ + && apt -y clean \ No newline at end of file