| # See https://aka.ms/yaml |
| |
| trigger: |
| - master |
| - stable-v* |
| - dev/stable-v*/* |
| pr: |
| - master |
| |
| resources: |
| containers: |
| - container: azp |
| image: ucfconsort.azurecr.io/rdma-core/azure_pipelines:44.0 |
| endpoint: ucfconsort_registry |
| - container: centos7 |
| image: ucfconsort.azurecr.io/rdma-core/centos7:25.0 |
| endpoint: ucfconsort_registry |
| - container: centos8 |
| image: ucfconsort.azurecr.io/rdma-core/centos8:44.0 |
| endpoint: ucfconsort_registry |
| - container: centos9 |
| image: ucfconsort.azurecr.io/rdma-core/centos9:44.0 |
| endpoint: ucfconsort_registry |
| - container: fedora |
| image: ucfconsort.azurecr.io/rdma-core/fc41:54.0 |
| endpoint: ucfconsort_registry |
| - container: xenial |
| image: ucfconsort.azurecr.io/rdma-core/ubuntu-16.04:28.0 |
| endpoint: ucfconsort_registry |
| - container: bionic |
| image: ucfconsort.azurecr.io/rdma-core/ubuntu-18.04:29.0 |
| endpoint: ucfconsort_registry |
| - container: focal |
| image: ucfconsort.azurecr.io/rdma-core/ubuntu-20.04:44.0 |
| endpoint: ucfconsort_registry |
| - container: leap |
| image: ucfconsort.azurecr.io/rdma-core/opensuse-15.0:25.0 |
| endpoint: ucfconsort_registry |
| - container: i386 |
| image: ucfconsort.azurecr.io/rdma-core/debian-11-i386:37.0 |
| options: --platform linux/386 |
| endpoint: ucfconsort_registry |
| |
| stages: |
| - stage: Build |
| jobs: |
| - job: Compile |
| displayName: Compile Tests |
| pool: |
| vmImage: 'ubuntu-latest' |
| container: azp |
| steps: |
| - task: PythonScript@0 |
| displayName: checkpatch |
| condition: eq(variables['Build.Reason'], 'PullRequest') |
| inputs: |
| scriptPath: buildlib/azp-checkpatch |
| pythonInterpreter: /usr/bin/python3 |
| |
| - bash: | |
| set -e |
| mkdir build-gcc12 |
| cd build-gcc12 |
| CC=gcc-12 cmake -GNinja .. -DIOCTL_MODE=both -DENABLE_STATIC=1 -DENABLE_WERROR=1 |
| ninja |
| displayName: gcc 12.1 Compile |
| |
| - task: PythonScript@0 |
| displayName: Check Build Script |
| inputs: |
| scriptPath: buildlib/check-build |
| arguments: --src .. --cc gcc-12 |
| workingDirectory: build-gcc12 |
| pythonInterpreter: /usr/bin/python3 |
| |
| # Run sparse on the subdirectories which are sparse clean |
| - bash: | |
| set -e |
| mkdir build-sparse |
| mv CMakeLists.txt CMakeLists-orig.txt |
| grep -v "# NO SPARSE" CMakeLists-orig.txt > CMakeLists.txt |
| cd build-sparse |
| CC=cgcc cmake -GNinja .. -DIOCTL_MODE=both -DNO_PYVERBS=1 -DENABLE_WERROR=1 |
| ninja | grep -v '^\[' | tee out |
| # sparse does not fail gcc on messages |
| if [ -s out ]; then |
| false |
| fi |
| mv ../CMakeLists-orig.txt ../CMakeLists.txt |
| displayName: sparse Analysis |
| |
| - bash: | |
| set -e |
| mkdir build-clang |
| cd build-clang |
| CC=clang-15 cmake -GNinja .. -DCMAKE_BUILD_TYPE=Debug -DIOCTL_MODE=both -DENABLE_WERROR=1 |
| ninja |
| displayName: clang 15 Compile |
| |
| - bash: | |
| set -e |
| mv util/udma_barrier.h util/udma_barrier.h.old |
| echo "#error Fail" >> util/udma_barrier.h |
| cd build-gcc12 |
| rm CMakeCache.txt |
| CC=gcc-12 cmake -GNinja .. -DIOCTL_MODE=both -DENABLE_WERROR=1 |
| ninja |
| mv ../util/udma_barrier.h.old ../util/udma_barrier.h |
| displayName: Simulate non-coherent DMA Platform Compile |
| |
| - bash: | |
| set -e |
| mkdir build-arm64 |
| cd build-arm64 |
| CC=aarch64-linux-gnu-gcc-12 PKG_CONFIG_PATH=/usr/lib/aarch64-linux-gnu/pkgconfig/ cmake -GNinja .. -DIOCTL_MODE=both -DNO_PYVERBS=1 -DENABLE_WERROR=1 |
| ninja |
| displayName: gcc 12.1 ARM64 Compile |
| |
| - bash: | |
| set -e |
| mkdir build-ppc64el |
| cd build-ppc64el |
| CC=powerpc64le-linux-gnu-gcc-12 PKG_CONFIG_PATH=/usr/lib/powerpc64le-linux-gnu/pkgconfig/ cmake -GNinja .. -DIOCTL_MODE=both -DNO_PYVERBS=1 -DENABLE_WERROR=1 |
| ninja |
| displayName: gcc 12.1 PPC64EL Compile |
| |
| - job: Compile32 |
| displayName: Compile Tests 32 bit |
| pool: |
| vmImage: 'ubuntu-latest' |
| container: i386 |
| steps: |
| - bash: | |
| set -e |
| mkdir build-i386 |
| cd build-i386 |
| cmake -GNinja .. -DIOCTL_MODE=both -DENABLE_WERROR=1 |
| ninja |
| displayName: gcc 10.2 i386 Compile |
| |
| - job: SrcPrep |
| displayName: Build Source Tar |
| pool: |
| vmImage: 'ubuntu-latest' |
| container: azp |
| steps: |
| - checkout: self |
| fetchDepth: 1 |
| |
| - bash: | |
| set -e |
| mkdir build-pandoc artifacts |
| cd build-pandoc |
| CC=gcc-12 cmake -GNinja .. |
| ninja docs |
| cd ../artifacts |
| # FIXME: Check Build.SourceBranch for tag consistency |
| python3 ../buildlib/cbuild make-dist-tar ../build-pandoc |
| displayName: Prebuild Documentation |
| |
| - task: PublishPipelineArtifact@0 |
| inputs: |
| # Contains an rdma-core-XX.tar.gz file |
| artifactName: source_tar |
| targetPath: artifacts |
| |
| - job: RPM_Distros |
| displayName: Test Build RPMs for |
| dependsOn: SrcPrep |
| pool: |
| vmImage: 'ubuntu-latest' |
| strategy: |
| matrix: |
| centos7: |
| CONTAINER: centos7 |
| SPEC: redhat/rdma-core.spec |
| RPMBUILD_OPTS: --define 'EXTRA_CMAKE_FLAGS -DCMAKE_BUILD_TYPE=Debug -DENABLE_WERROR=1' |
| centos8: |
| CONTAINER: centos8 |
| SPEC: redhat/rdma-core.spec |
| RPMBUILD_OPTS: --define 'EXTRA_CMAKE_FLAGS -DCMAKE_BUILD_TYPE=Debug -DENABLE_WERROR=1' |
| centos9: |
| CONTAINER: centos9 |
| SPEC: redhat/rdma-core.spec |
| RPMBUILD_OPTS: --define 'EXTRA_CMAKE_FLAGS -DCMAKE_BUILD_TYPE=Debug -DENABLE_WERROR=1' |
| fedora41: |
| CONTAINER: fedora |
| SPEC: redhat/rdma-core.spec |
| RPMBUILD_OPTS: --define 'EXTRA_CMAKE_FLAGS -DCMAKE_BUILD_TYPE=Debug -DENABLE_WERROR=1' |
| leap: |
| CONTAINER: leap |
| SPEC: suse/rdma-core.spec |
| RPMBUILD_OPTS: --define 'EXTRA_CMAKE_FLAGS -DCMAKE_BUILD_TYPE=Debug -DENABLE_WERROR=1' --without=curlmini |
| container: $[ variables['CONTAINER'] ] |
| steps: |
| - checkout: none |
| |
| - task: DownloadPipelineArtifact@2 |
| inputs: |
| artifactName: source_tar |
| targetPath: . |
| |
| - bash: | |
| set -e |
| mkdir SOURCES tmp |
| tar --wildcards -xzf rdma-core*.tar.gz */$(SPEC) --strip-components=2 |
| RPM_SRC=$((rpmspec -P *.spec || grep ^Source: *.spec) | awk '/^Source:/{split($0,a,"[ \t]+");print(a[2])}') |
| (cd SOURCES && ln -sf ../rdma-core*.tar.gz "$RPM_SRC") |
| rpmbuild --define '_tmppath '$(pwd)'/tmp' --define '_topdir '$(pwd) -bb *.spec $(RPMBUILD_OPTS) |
| displayName: Perform Package Build |
| |
| - job: DEB_Distros |
| displayName: Test Build DEBs for |
| dependsOn: SrcPrep |
| pool: |
| vmImage: 'ubuntu-latest' |
| strategy: |
| matrix: |
| xenial: |
| CONTAINER: xenial |
| bionic: |
| CONTAINER: bionic |
| focal: |
| CONTAINER: focal |
| jammy: |
| CONTAINER: azp |
| LINTIAN: true |
| container: $[ variables['CONTAINER'] ] |
| steps: |
| - checkout: none |
| |
| - task: DownloadPipelineArtifact@2 |
| inputs: |
| artifactName: source_tar |
| targetPath: . |
| |
| - bash: | |
| set -e |
| mv *.tar.gz src.tar.gz |
| tar -xzf src.tar.gz |
| cd rdma-core*/ |
| dpkg-buildpackage -b -d |
| displayName: Perform Package Build |
| |
| - bash: | |
| lintian *.deb |
| displayName: Debian Lintian for .deb packages |
| condition: eq(variables['LINTIAN'], 'true') |