diff --git a/.azuredevops/dependencies/boost.yml b/.azuredevops/dependencies/boost.yml new file mode 100644 index 000000000..16cc1a699 --- /dev/null +++ b/.azuredevops/dependencies/boost.yml @@ -0,0 +1,65 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: boostVersion + type: string + default: '' +- name: aptPackages + type: object + default: + - git +- name: rocmDependencies + type: object + default: + - llvm-project + +jobs: +- job: boost + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.BASE_BUILD_POOL }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - task: Bash@3 + displayName: 'git clone boost' + inputs: + targetType: inline + script: git clone -b ${{ parameters.boostVersion }} https://github.com/boostorg/boost --depth=1 --recurse-submodules + workingDirectory: $(Build.SourcesDirectory) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml + parameters: + dependencyList: ${{ parameters.rocmDependencies }} + dependencySource: staging + - task: Bash@3 + displayName: Add ROCm binaries to PATH + inputs: + targetType: inline + script: echo "##vso[task.prependpath]$(Agent.BuildDirectory)/rocm/bin" + - task: Bash@3 + displayName: Add ROCm compilers to PATH + inputs: + targetType: inline + script: echo "##vso[task.prependpath]$(Agent.BuildDirectory)/rocm/llvm/bin" + - task: Bash@3 + displayName: 'Build Boost with clang' + inputs: + targetType: inline + script: | + export CC=$(Agent.BuildDirectory)/rocm/llvm/bin/clang + export CXX=$(Agent.BuildDirectory)/rocm/llvm/bin/clang++ + ./bootstrap.sh --with-toolset=clang --prefix=$(Build.BinariesDirectory) + ./b2 --toolset=clang threading=multi link=shared --prefix=$(Build.BinariesDirectory) cxxflags="-std=c++20" + ./b2 install + workingDirectory: $(Build.SourcesDirectory)/boost + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/tag-builds/boost.yml b/.azuredevops/tag-builds/boost.yml new file mode 100644 index 000000000..1411679e2 --- /dev/null +++ b/.azuredevops/tag-builds/boost.yml @@ -0,0 +1,23 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml + +parameters: +- name: boostVersion + type: string + default: 'master' + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_DEPENDENCIES_PATH }}/boost.yml + parameters: + boostVersion: ${{ parameters.boostVersion }} diff --git a/.azuredevops/templates/steps/dependencies-boost.yml b/.azuredevops/templates/steps/dependencies-boost.yml new file mode 100644 index 000000000..ec25c2ec7 --- /dev/null +++ b/.azuredevops/templates/steps/dependencies-boost.yml @@ -0,0 +1,64 @@ +# download and install rocm dependencies through pipeline builds in the project +# REQUIRED +parameters: +- name: dependencyList + type: object + default: [] +- name: dependencySource + type: string + default: staging + values: + - staging + - mainline + - tag-builds + - fixed +- name: extractToMnt + type: boolean + default: false +# required values for fixed selection +- name: fixedPipelineIdentifier + type: string + default: 0 +- name: fixedComponentName + type: string + default: '' +- name: latestFromBranch + type: boolean + default: true + +steps: +# fixed case only accepts one component at a time, so no array input +- task: DownloadPipelineArtifact@2 + displayName: Download ${{ parameters.componentName }} + inputs: + buildType: specific + project: ROCm-CI + definition: $(BOOST_DEPENDENCY_PIPELINE_ID) + targetPath: $(Pipeline.Workspace)/d +- task: ExtractFiles@1 + displayName: Extract ${{ parameters.componentName }} + inputs: + archiveFilePatterns: '$(Pipeline.Workspace)/d/**/*.tar.gz' + destinationFolder: $(Agent.BuildDirectory)/boost + cleanDestinationFolder: true + overwriteExistingFiles: true +- task: DeleteFiles@1 + displayName: Cleanup Compressed ${{ parameters.componentName }} + inputs: + SourceFolder: $(Pipeline.Workspace)/d + Contents: '**/*.tar.gz' + RemoveDotFiles: true +- task: Bash@3 + displayName: 'List noost files' + inputs: + targetType: inline + script: ls -1R $(Agent.BuildDirectory)/boost +- task: Bash@3 + displayName: 'Link boost shared libraries' + inputs: + targetType: inline + script: | + echo $(Agent.BuildDirectory)/boost/lib | sudo tee /etc/ld.so.conf.d/boost.conf + sudo cat /etc/ld.so.conf.d/boost.conf + sudo ldconfig -v + ldconfig -p diff --git a/.azuredevops/variables-global.yml b/.azuredevops/variables-global.yml index f1ed3284d..a460acf66 100644 --- a/.azuredevops/variables-global.yml +++ b/.azuredevops/variables-global.yml @@ -325,3 +325,5 @@ variables: value: 78 - name: RPP_TAGGED_PIPELINE_ID value: 39 +- name: BOOST_DEPENDENCY_PIPELINE_ID + value: 250