mirror of
https://github.com/EttusResearch/uhd.git
synced 2026-10-25 17:36:10 +00:00
Add nib310rio-dev to the Debian build dependencies so the UHD package build fails if the B310 userspace header is unavailable instead of silently disabling B300 support. The Ubuntu installer pipeline downloads the nib310rio Debian package artifact and exposes it to pbuilder as a local apt repository. This lets pbuilder satisfy the new dependency inside the clean build root where CMake checks for nib310rio/nib310rio.h.
206 lines
8.9 KiB
YAML
206 lines
8.9 KiB
YAML
parameters:
|
|
- name: 'toolset'
|
|
type: string
|
|
values:
|
|
- fedora_rpm
|
|
- make
|
|
- msbuild
|
|
- ubuntu_deb
|
|
- name: 'installer'
|
|
type: string
|
|
values:
|
|
- rpm # fedora_rpm
|
|
- tar # make
|
|
- nsis # msbuild
|
|
- deb # ubuntu_deb
|
|
- name: 'cmake_args'
|
|
type: string
|
|
default: " "
|
|
- name: releaseBinaries
|
|
type: boolean
|
|
default: false
|
|
# In this job, we always use uhd_images_downloader to get FPGA images, never
|
|
# the pipeline. This variable only controls if we use files.ettus.com or our
|
|
# internal server.
|
|
- name: fpga_imgs_source
|
|
type: string
|
|
default: 'Internal'
|
|
values:
|
|
- 'Internal'
|
|
- 'files.ettus.com (Public)'
|
|
- name: create_sbom
|
|
type: boolean
|
|
default: true
|
|
|
|
jobs:
|
|
- job: build_uhd_installer_${{ parameters.toolset }}
|
|
displayName: ${{ parameters.toolset }} UHD installer
|
|
dependsOn: get_latest_uhd_docker
|
|
${{ if contains(parameters.toolset, 'msbuild') }}:
|
|
timeoutInMinutes: 150
|
|
${{ else }}:
|
|
timeoutInMinutes: 120
|
|
variables:
|
|
# Need to use list format to support inclusion of variable groups.
|
|
# Variable group used by .ci/templates/steps-windows-sbom.yml@ettus-rts
|
|
- group: meta-ettus-vars
|
|
# Variable group needed for code signing (signtool-p4-path)
|
|
- ${{ if eq(parameters.toolset, 'msbuild') }}:
|
|
- group: sdr-pipeline-vars
|
|
# Docker vars from job-get-latest-uhd-docker.yml
|
|
- name: dockerBuildNumber
|
|
value: $[ dependencies.get_latest_uhd_docker.outputs['setDockerVar.dockerBuildNumber'] ]
|
|
- name: dockerImagePrefix
|
|
value: $[ dependencies.get_latest_uhd_docker.outputs['setDockerVar.dockerImagePrefix'] ]
|
|
- name: dockerImageMatrixLin
|
|
value: $[ dependencies.get_latest_uhd_docker.outputs['setDockerVar.dockerImageMatrixLin'] ]
|
|
- name: dockerImageMatrixWin
|
|
value: $[ dependencies.get_latest_uhd_docker.outputs['setDockerVar.dockerImageMatrixWin'] ]
|
|
- name: dockerImageMatrixUbuntuDeb
|
|
value: $[ dependencies.get_latest_uhd_docker.outputs['setDockerVar.dockerImageMatrixUbuntuDeb'] ]
|
|
- name: macOSBuilders
|
|
value: $[ dependencies.get_latest_uhd_docker.outputs['setDockerVar.macOSBuilders'] ]
|
|
- name: dockerImageMatrixSourcePackageBuilders
|
|
value: $[ dependencies.get_latest_uhd_docker.outputs['setDockerVar.dockerImageMatrixSourcePackageBuilders'] ]
|
|
- name: dockerImageMatrixFedoraRpm
|
|
value: $[ dependencies.get_latest_uhd_docker.outputs['setDockerVar.dockerImageMatrixFedoraRpm'] ]
|
|
pool:
|
|
name: Drivers-NIBuildFarm-RFMIBUILD
|
|
demands:
|
|
- docker
|
|
- ${{ if contains(parameters.toolset, 'msbuild') }}:
|
|
- Agent.OS -equals Windows_NT
|
|
- large_disk -equals 1
|
|
- high_disk_io -equals 1
|
|
- high_cpu_per_thread -equals 1
|
|
- cpu_host_type -equals Intel_x86-64-v4
|
|
- ${{ if not(contains(parameters.toolset, 'msbuild')) }}:
|
|
- Agent.OS -equals Linux
|
|
workspace:
|
|
clean: outputs
|
|
strategy:
|
|
${{ if and(eq(parameters.toolset, 'make'), eq(parameters.installer, 'tarball')) }}:
|
|
matrix: $[ variables.dockerImageMatrixLin ]
|
|
${{ if and(eq(parameters.toolset, 'msbuild'), eq(parameters.installer, 'nsis')) }}:
|
|
matrix: $[ variables.dockerImageMatrixWin ]
|
|
${{ if and(eq(parameters.toolset, 'ubuntu_deb'), eq(parameters.installer, 'deb')) }}:
|
|
matrix: $[ variables.dockerImageMatrixUbuntuDeb ]
|
|
${{ if and(eq(parameters.toolset, 'fedora_rpm'), eq(parameters.installer, 'rpm')) }}:
|
|
matrix: $[ variables.dockerImageMatrixFedoraRpm ]
|
|
container:
|
|
image: '$(dockerImagePrefix)$(DockerImageName):$(dockerBuildNumber)'
|
|
${{ if eq(parameters.toolset, 'msbuild') }}:
|
|
options: --cpu-count 6 --memory 12G
|
|
${{ if or(eq(variables['Build.SourceBranch'], 'refs/heads/master'), startsWith(variables['Build.SourceBranch'], 'refs/heads/UHD-')) }}:
|
|
endpoint: rnd-docker-niartifacts-ci-readonly
|
|
${{ else }}:
|
|
endpoint: rnd-docker-niartifacts-pre-readonly
|
|
${{ if eq(parameters.toolset, 'ubuntu_deb') }}:
|
|
#pbuilder requires access to /proc
|
|
options: --privileged
|
|
steps:
|
|
# Job uses template which causes self checkout to result in different values
|
|
# for $(Build.SourcesDirectory) due to single vs multiple repositories use.
|
|
# Switching to use manual path definition $(Pipeline.Workspace)/s/<RepoName>
|
|
# for consistent behavior to avoid
|
|
# $(Pipeline.Workspace)/s vs $(Pipeline.Workspace)/s/<RepoName>).
|
|
# Custom path now includes <RepoName>, which is now hardcoded, rather than
|
|
# use name from git repo (avoids problem when building from public uhd repo).
|
|
# Checkout path needs to be defined relative to $(Pipeline.Workspace).
|
|
- checkout: self
|
|
clean: true
|
|
path: 's/uhddev'
|
|
# Need to use OS specific steps because predefined variable
|
|
# (i.e. $(Pipeline.Workspace) on Linux is treated as runtime shell expansion,
|
|
# but actually handled by Azure and the quotes ensure correct, delayed variable
|
|
# expansion. On Windows variables are exanded before script runs, and
|
|
# using quotes results in leading or trailing quotes in the variable value.
|
|
- script: |
|
|
echo "##vso[task.setvariable variable=uhdSrcDir]$(Pipeline.Workspace)/s/uhddev"
|
|
condition: eq( variables['Agent.OS'], 'Linux' )
|
|
displayName: 'Define uhdSrcDir variable (Linux)'
|
|
- script: |
|
|
echo ##vso[task.setvariable variable=uhdSrcDir]$(Pipeline.Workspace)\s\uhddev
|
|
condition: eq( variables['Agent.OS'], 'Windows_NT' )
|
|
displayName: 'Define uhdSrcDir variable (Windows)'
|
|
|
|
|
|
- download: uhd_build_docker_container
|
|
- template: .ci/templates/steps-setup.yml@ettus-rts
|
|
- ${{ if eq(parameters.toolset, 'fedora_rpm') }}:
|
|
- template: steps-build-uhd-installer-fedora-rpm.yml
|
|
parameters:
|
|
uhdSrcDir: $(uhdSrcDir)
|
|
uhdBuildDir: $(Build.BinariesDirectory)/uhddev/build
|
|
uhdInstallerDir: $(Build.BinariesDirectory)/uhddev-installer
|
|
fedoraReleaseName: $(fedoraReleaseName)
|
|
releaseBinaries: ${{ parameters.releaseBinaries }}
|
|
cmake_args: ${{ parameters.cmake_args }}
|
|
- ${{ if parameters.create_sbom }}:
|
|
- template: .ci/templates/steps-linux-sbom.yml@ettus-rts
|
|
parameters:
|
|
toolset: ${{ parameters.toolset }}
|
|
installer: ${{ parameters.installer }}
|
|
sbomComponentList: 'uhd libuhd libboost libusb'
|
|
buildOSName: $(buildOSName)
|
|
osReleaseName: $(fedoraReleaseName)
|
|
uhdSrcDir: $(uhdSrcDir)
|
|
uhdInstallerDir: $(Build.BinariesDirectory)/uhddev-installer
|
|
releaseBinaries: ${{ parameters.releaseBinaries }}
|
|
- ${{ if eq(parameters.toolset, 'ubuntu_deb') }}:
|
|
- template: steps-install-nib310rio-dev.yml
|
|
- template: steps-build-uhd-installer-ubuntu-deb.yml
|
|
parameters:
|
|
uhdSrcDir: $(uhdSrcDir)
|
|
uhdInstallerDir: $(Build.BinariesDirectory)/uhddev-installer
|
|
ubuntuReleaseName: $(ubuntuReleaseName)
|
|
nib310rioDebPackageDir: $(Pipeline.Workspace)/nib310rio_kernel_packages/nib310rio-deb-packages
|
|
cmake_args: ${{ parameters.cmake_args }}
|
|
- ${{ if parameters.create_sbom }}:
|
|
- template: .ci/templates/steps-linux-sbom.yml@ettus-rts
|
|
parameters:
|
|
toolset: ${{ parameters.toolset }}
|
|
installer: ${{ parameters.installer }}
|
|
sbomComponentList: 'uhd libuhd'
|
|
buildOSName: $(buildOSName)
|
|
osReleaseName: $(ubuntuReleaseName)
|
|
uhdSrcDir: $(uhdSrcDir)
|
|
uhdInstallerDir: $(Build.BinariesDirectory)/uhddev-installer
|
|
releaseBinaries: ${{ parameters.releaseBinaries }}
|
|
- ${{ if and(eq(parameters.toolset, 'msbuild'), eq(parameters.installer, 'nsis')) }}:
|
|
- template: steps-build-uhd-installer-msbuild-nsis.yml
|
|
parameters:
|
|
uhdSrcDir: $(uhdSrcDir)
|
|
uhdBuildDir: c:\uhddev\build
|
|
uhdInstallerDir: $(Build.BinariesDirectory)\uhddev-installer
|
|
uhdImageDir: c:\uhd-images
|
|
uhdVcpkgManifestDir: c:\uhd-vcpkg
|
|
uhdReleaseBinaries: ${{ parameters.releaseBinaries }}
|
|
uhdBuildPythonAPI: True
|
|
${{ if contains(parameters.fpga_imgs_source, 'Internal') }}:
|
|
uhdImagesDownloaderExtraArgs: '-b $(InternalFileServerUrl)'
|
|
cmakeCompiler: $(cmakeCompiler)
|
|
cmakeArch: $(cmakeArch)
|
|
vsArch: $(vsArch)
|
|
vsYear: $(vsYear)
|
|
cleanTargetFolder: False
|
|
cmake_args: ${{ parameters.cmake_args }}
|
|
- ${{ if parameters.create_sbom }}:
|
|
- template: .ci/templates/steps-windows-sbom.yml@ettus-rts
|
|
parameters:
|
|
sbomComponentList: ''
|
|
buildOSName: $(buildOSName)
|
|
uhdSrcDir: $(uhdSrcDir)
|
|
uhdInstallerDir: $(Build.BinariesDirectory)\uhddev-installer
|
|
uhdBuildDir: c:\uhddev\build
|
|
uhdVcpkgManifestDir: c:\uhd-vcpkg
|
|
releaseBinaries: ${{ parameters.releaseBinaries }}
|
|
uhdBuildPythonAPI: True
|
|
vsArch: $(vsArch)
|
|
vsYear: $(vsYear)
|
|
- task: PublishPipelineArtifact@1
|
|
inputs:
|
|
targetPath: '$(Build.BinariesDirectory)/uhddev-installer'
|
|
artifactName: 'uhddev-$(buildOSName)-${{ parameters.toolset }}-${{ parameters.installer }}-installer'
|
|
displayName: Upload uhd installer artifact
|