diff options
author | Steven Koo <steven.koo@ni.com> | 2021-07-16 09:38:16 -0500 |
---|---|---|
committer | Aaron Rossetto <aaron.rossetto@ni.com> | 2021-07-23 09:55:39 -0500 |
commit | 0d9667e6968dd1e6edda62693ab6a858849d3a08 (patch) | |
tree | 648acd7fd9f3ed6e9527cf3d3495053772e904d9 /.ci | |
parent | a7486cbfba959d7f55a9343db66eabee94786b2f (diff) | |
download | uhd-0d9667e6968dd1e6edda62693ab6a858849d3a08.tar.gz uhd-0d9667e6968dd1e6edda62693ab6a858849d3a08.tar.bz2 uhd-0d9667e6968dd1e6edda62693ab6a858849d3a08.zip |
ci: Add custom boost version support
This adds new variables which can be used to set a a URL to a custom
Boost archive. If provided, the pipeline will download the custom Boost
archive, unpack it, build it, and provide CMake flags for UHD before
starting the UHD build itself.
This allows semi-automatic testing of new Boost versions as they are
released.
Diffstat (limited to '.ci')
-rw-r--r-- | .ci/templates/job-uhd-build-src.yml | 15 | ||||
-rw-r--r-- | .ci/templates/stages-uhd-pipeline.yml | 14 | ||||
-rw-r--r-- | .ci/templates/steps-build-uhd-make.yml | 39 | ||||
-rw-r--r-- | .ci/uhd-pipeline-pr.yml | 11 |
4 files changed, 78 insertions, 1 deletions
diff --git a/.ci/templates/job-uhd-build-src.yml b/.ci/templates/job-uhd-build-src.yml index a5909388a..25f8b4897 100644 --- a/.ci/templates/job-uhd-build-src.yml +++ b/.ci/templates/job-uhd-build-src.yml @@ -3,10 +3,15 @@ parameters: type: string values: - make + - make_custom_boost_version - make_trace - ninja - msbuild - ubuntu_deb +- name: 'custom_boost_version_url' + type: string + default: 'https://boostorg.jfrog.io/artifactory/main/release/1.76.0/source/boost_1_76_0.tar.bz2' + jobs: - job: build_ctest_and_upload_uhd_${{ parameters.toolset }} @@ -35,7 +40,7 @@ jobs: strategy: ${{ if eq(parameters.toolset, 'msbuild') }}: matrix: $[ variables.dockerImageMatrixWin ] - ${{ if or(eq(parameters.toolset, 'make'), eq(parameters.toolset, 'make_trace'), eq(parameters.toolset, 'ninja')) }}: + ${{ if or(eq(parameters.toolset, 'make'), eq(parameters.toolset, 'make_trace'), eq(parameters.toolset, 'ninja'), eq(parameters.toolset, 'make_custom_boost_version')) }}: matrix: $[ variables.dockerImageMatrixLin ] ${{ if eq(parameters.toolset, 'ubuntu_deb') }}: matrix: $[ variables.dockerImageMatrixUbuntuDeb ] @@ -87,6 +92,14 @@ jobs: uhdBuildDir: $(Build.BinariesDirectory)/uhddev ubuntuReleaseName: $(ubuntuReleaseName) + - ${{ if eq(parameters.toolset, 'make_custom_boost_version') }}: + - template: steps-build-uhd-make.yml + parameters: + uhdSrcDir: $(Build.SourcesDirectory) + uhdBuildDir: $(Build.BinariesDirectory)/uhddev/build + uhdCustomBoostPackage: true + uhdCustomBoostPackageURL: ${{ parameters.custom_boost_version_url }} + - task: ArchiveFiles@2 inputs: rootFolderOrFile: $(Build.BinariesDirectory) diff --git a/.ci/templates/stages-uhd-pipeline.yml b/.ci/templates/stages-uhd-pipeline.yml index 99c607e03..f7d705fed 100644 --- a/.ci/templates/stages-uhd-pipeline.yml +++ b/.ci/templates/stages-uhd-pipeline.yml @@ -4,6 +4,14 @@ # SPDX-License-Identifier: LGPL-3.0-or-later # +parameters: +- name: custom_boost_version + type: boolean + default: false +- name: custom_boost_version_url + type: string + default: 'https://boostorg.jfrog.io/artifactory/main/release/1.76.0/source/boost_1_76_0.tar.bz2' + variables: - template: ../uhd-pipeline-vars.yml @@ -33,6 +41,12 @@ stages: - template: job-uhd-build-src.yml parameters: toolset: ubuntu_deb + - ${{ if parameters.custom_boost_version }}: + - template: job-uhd-build-src.yml + parameters: + toolset: make_custom_boost_version + custom_boost_version_url: ${{ parameters.custom_boost_version_url }} + - stage: test_uhd_stage displayName: Test UHD diff --git a/.ci/templates/steps-build-uhd-make.yml b/.ci/templates/steps-build-uhd-make.yml index 7073447af..1882b53ba 100644 --- a/.ci/templates/steps-build-uhd-make.yml +++ b/.ci/templates/steps-build-uhd-make.yml @@ -12,8 +12,43 @@ parameters: - name: uhdCxxFlags type: string default: "" +- name: uhdCustomBoostPackage + type: boolean + default: false +- name: uhdCustomBoostPackageURL + type: string + default: 'https://boostorg.jfrog.io/artifactory/main/release/1.76.0/source/boost_1_76_0.tar.bz2' + steps: +# If we are requested to use a custom Boost package, then we download and build +# it first +- ${{ if parameters.uhdCustomBoostPackage }}: + - bash: | + cd $(Pipeline.Workspace) + echo "Entering workspace directory:" + pwd + rm -rf boost + mkdir boost + cd boost + # We reimplement tar's -a flag here so we can pipe from curl straight to tar + if [[ "${{ parameters.uhdCustomBoostPackageURL }}" =~ bz2$ ]]; then + export TAR_EXTRACT_FLAG="j" + elif [[ "${{ parameters.uhdCustomBoostPackageURL }}" =~ gz2$ ]]; then + export TAR_EXTRACT_FLAG="x" + elif [[ "${{ parameters.uhdCustomBoostPackageURL }}" =~ xz$ ]]; then + export TAR_EXTRACT_FLAG="J" + fi + curl -L ${{ parameters.uhdCustomBoostPackageURL }} | tar -x -$TAR_EXTRACT_FLAG + export BOOST_DIR=`pwd`/`ls | head -1` + echo "Using Boost directory: $BOOST_DIR" + echo "##vso[task.setvariable variable=CustomBoostPath;isOutput=true;]$BOOST_DIR" + cd $BOOST_DIR + ./bootstrap.sh + ./b2 -j$(nproc) + displayName: "Build Custom Boost Version" + name: build_boost_step + - script: | mkdir -p ${{ parameters.uhdBuildDir }} cd ${{ parameters.uhdBuildDir }} @@ -26,6 +61,10 @@ steps: export CXXFLAGS="-Werror -Wno-error=maybe-uninitialized $CXXFLAGS" fi export CXXFLAGS="${{ parameters.uhdCxxFlags }} $CXXFLAGS" + if [[ "${{ parameters.uhdCustomBoostPackage }}" = "True" ]]; then + export BOOST_CMAKE_DIR=$(dirname `find $(build_boost_step.CustomBoostPath)/stage/lib -name BoostConfig.cmake`) + export UHD_CI_CMAKE_OPTIONS="-DBoost_INCLUDE_DIR=$(build_boost_step.CustomBoostPath) -DBoost_DIR=$BOOST_CMAKE_DIR -DBoost_LIBRARY_DIRS=$(build_boost_step.CustomBoostPath)/stage/lib $UHD_CI_CMAKE_OPTIONS" + fi cmake \ $UHD_CI_CMAKE_OPTIONS \ ${{ parameters.uhdSrcDir }}/host diff --git a/.ci/uhd-pipeline-pr.yml b/.ci/uhd-pipeline-pr.yml index c48ffb325..13949c5e8 100644 --- a/.ci/uhd-pipeline-pr.yml +++ b/.ci/uhd-pipeline-pr.yml @@ -4,6 +4,14 @@ # SPDX-License-Identifier: LGPL-3.0-or-later # +parameters: +- name: custom_boost_version + type: boolean + default: false +- name: custom_boost_version_url + type: string + default: 'https://boostorg.jfrog.io/artifactory/main/release/1.76.0/source/boost_1_76_0.tar.bz2' + trigger: none pr: @@ -23,3 +31,6 @@ pr: extends: template: templates/stages-uhd-pipeline.yml + parameters: + custom_boost_version: ${{ parameters.custom_boost_version }} + custom_boost_version_url: ${{ parameters.custom_boost_version_url }} |