diff --git a/csharp/OnnxRuntime.CSharp.proj b/csharp/OnnxRuntime.CSharp.proj index d4c0b2158b..93e8e14c6a 100644 --- a/csharp/OnnxRuntime.CSharp.proj +++ b/csharp/OnnxRuntime.CSharp.proj @@ -131,7 +131,7 @@ CMake creates a target to this project - + diff --git a/tools/ci_build/github/azure-pipelines/c-api-noopenmp-packaging-pipelines.yml b/tools/ci_build/github/azure-pipelines/c-api-noopenmp-packaging-pipelines.yml index 04904e2cb5..2344b275fb 100644 --- a/tools/ci_build/github/azure-pipelines/c-api-noopenmp-packaging-pipelines.yml +++ b/tools/ci_build/github/azure-pipelines/c-api-noopenmp-packaging-pipelines.yml @@ -458,16 +458,17 @@ jobs: arguments: '--configuration RelWithDebInfo -t:CreatePackage -p:Platform="Any CPU" -p:OnnxRuntimeBuildDirectory="$(Build.BinariesDirectory)" -p:OrtPackageId=Microsoft.ML.OnnxRuntime.Gpu -p:IsReleaseBuild=${{ parameters.IsReleaseBuild }}' workingDirectory: '$(Build.SourcesDirectory)\csharp' - - task: BatchScript@1 - displayName: 'Bundle Native NuGet and other binaries' + - task: CopyFiles@2 + displayName: 'Copy nuget packages to: $(Build.ArtifactStagingDirectory)' inputs: - filename: $(Build.SourcesDirectory)\tools\ci_build\github\windows\bundle_dlls_gpu_nuget.bat - workingFolder: $(Build.BinariesDirectory)\RelWithDebInfo\RelWithDebInfo\nuget-artifacts + SourceFolder: '$(Build.BinariesDirectory)\RelWithDebInfo\RelWithDebInfo' + Contents: '*.snupkg' + TargetFolder: '$(Build.ArtifactStagingDirectory)' - task: CopyFiles@2 displayName: 'Copy nuget packages to: $(Build.ArtifactStagingDirectory)' inputs: - SourceFolder: '$(Build.BinariesDirectory)\RelWithDebInfo\RelWithDebInfo\nuget-artifacts' + SourceFolder: '$(Build.BinariesDirectory)\RelWithDebInfo\RelWithDebInfo' Contents: '*.nupkg' TargetFolder: '$(Build.ArtifactStagingDirectory)' @@ -497,12 +498,6 @@ jobs: artifactName: 'drop-signed-nuget-GPU' targetPath: '$(Build.ArtifactStagingDirectory)' - - powershell: | - $counter = 0 - Get-ChildItem -Path $(Build.ArtifactStagingDirectory)/*.nupkg | foreach {7z x -y -o$counter $_.fullname;$counter++} - workingDirectory: '$(Build.ArtifactStagingDirectory)' - displayName: 'Unzip files to sanitize the PE files' - - task: DotNetCoreCLI@2 displayName: 'Build C#' inputs: @@ -513,10 +508,6 @@ jobs: arguments: '--configuration RelWithDebInfo -p:Platform="Any CPU" -p:OnnxRuntimeBuildDirectory="$(Build.BinariesDirectory)" -p:OrtPackageId=Microsoft.ML.OnnxRuntime.Gpu' workingDirectory: '$(Build.SourcesDirectory)\csharp' - #TODO: enable binskim - #- task: BinSkim@4 - # displayName: 'Run BinSkim' - - task: RoslynAnalyzers@2 displayName: 'Run Roslyn Analyzers' inputs: diff --git a/tools/ci_build/github/azure-pipelines/templates/c-api-cpu-no-java.yml b/tools/ci_build/github/azure-pipelines/templates/c-api-cpu-no-java.yml index 202885a59c..13c9a0ad22 100644 --- a/tools/ci_build/github/azure-pipelines/templates/c-api-cpu-no-java.yml +++ b/tools/ci_build/github/azure-pipelines/templates/c-api-cpu-no-java.yml @@ -64,9 +64,9 @@ jobs: workingDirectory: $(Build.SourcesDirectory) - script: | - set -e -x + set -e -x mkdir $(Build.ArtifactStagingDirectory)/testdata - cp $(Build.BinariesDirectory)/Release/libcustom_op_library.so* $(Build.ArtifactStagingDirectory)/testdata + cp $(Build.BinariesDirectory)/Release/libcustom_op_library.so* $(Build.ArtifactStagingDirectory)/testdata ls -al $(Build.ArtifactStagingDirectory) displayName: 'Create Artifacts' @@ -114,7 +114,7 @@ jobs: export ONNX_ML=1 export CMAKE_ARGS="-DONNX_GEN_PB_TYPE_STUBS=OFF -DONNX_WERROR=OFF" sudo python3 -m pip install -r '$(Build.SourcesDirectory)/tools/ci_build/github/linux/docker/scripts/requirements.txt' - sudo xcode-select --switch /Applications/Xcode_12.4.app/Contents/Developer + sudo xcode-select --switch /Applications/Xcode_12.4.app/Contents/Developer python3 $(Build.SourcesDirectory)/tools/ci_build/build.py ${{ parameters.AdditionalBuildFlags }} --build_dir $(Build.BinariesDirectory) --skip_submodule_sync --parallel --build_shared_lib --config Release displayName: 'Build and Test MacOS' - template: c-api-artifacts-package-and-publish-steps-posix.yml @@ -126,7 +126,7 @@ jobs: commitId: $(OnnxRuntimeGitCommitHash) - script: | - set -e -x + set -e -x mkdir $(Build.ArtifactStagingDirectory)/testdata cp $(Build.BinariesDirectory)/Release/libcustom_op_library.dylib $(Build.ArtifactStagingDirectory)/testdata displayName: 'Create Artifacts' @@ -144,7 +144,6 @@ jobs: displayName: 'Clean Agent Directories' condition: always() - - template: win-ci.yml parameters: DoCompliance: ${{ parameters.DoCompliance }} @@ -197,6 +196,7 @@ jobs: runTests: ${{ parameters.RunOnnxRuntimeTests }} buildJava: false + - job: NuGet_Packaging_CPU workspace: clean: all @@ -226,7 +226,7 @@ jobs: inputs: artifactName: 'onnxruntime-win-x86' targetPath: '$(Build.BinariesDirectory)/nuget-artifact' - + - task: DownloadPipelineArtifact@0 displayName: 'Download Pipeline Artifact - NuGet' inputs: @@ -268,12 +268,10 @@ jobs: dir workingDirectory: '$(Build.BinariesDirectory)/nuget-artifact' displayName: 'List artifacts' - - script: | mklink /D /J models C:\local\models workingDirectory: '$(Build.BinariesDirectory)' displayName: 'Create models link' - - task: NuGetToolInstaller@0 displayName: Use Nuget 5.7.0 inputs: @@ -311,18 +309,19 @@ jobs: configuration: RelWithDebInfo arguments: '--configuration RelWithDebInfo -t:CreatePackage -p:Platform="Any CPU" -p:OnnxRuntimeBuildDirectory="$(Build.BinariesDirectory)" -p:OrtPackageId=$(OrtPackageId) -p:IsReleaseBuild=${{ parameters.IsReleaseBuild }}' workingDirectory: '$(Build.SourcesDirectory)\csharp' - - - task: BatchScript@1 - displayName: 'Bundle Native NuGet and other binaries' + + - task: CopyFiles@2 + displayName: 'Copy nuget packages to: $(Build.ArtifactStagingDirectory)' inputs: - filename: $(Build.SourcesDirectory)\tools\ci_build\github\windows\bundle_dlls.bat - workingFolder: $(Build.BinariesDirectory)\RelWithDebInfo\RelWithDebInfo\nuget-artifacts + SourceFolder: '$(Build.BinariesDirectory)\RelWithDebInfo\RelWithDebInfo' + Contents: '*.nupkg' + TargetFolder: '$(Build.ArtifactStagingDirectory)' - task: CopyFiles@2 displayName: 'Copy nuget packages to: $(Build.ArtifactStagingDirectory)' inputs: - SourceFolder: '$(Build.BinariesDirectory)\RelWithDebInfo\RelWithDebInfo\nuget-artifacts' - Contents: '*.nupkg' + SourceFolder: '$(Build.BinariesDirectory)\RelWithDebInfo\RelWithDebInfo' + Contents: '*.snupkg' TargetFolder: '$(Build.ArtifactStagingDirectory)' - task: CopyFiles@2 @@ -342,7 +341,7 @@ jobs: parameters: NugetPath: '$(Build.ArtifactStagingDirectory)' NugetPackage: 'Microsoft.ML.OnnxRuntime.*nupkg' - PlatformsSupported: 'win-x64,win-x86,linux-x64,osx-x64' + PlatformsSupported: 'win-x64,win-x86,linux-x64,osx.10.14-x64' VerifyNugetSigning: false - task: PublishPipelineArtifact@0 @@ -351,11 +350,6 @@ jobs: artifactName: 'drop-signed-nuget-CPU' targetPath: '$(Build.ArtifactStagingDirectory)' - - powershell: | - $counter = 0 - Get-ChildItem -Path $(Build.ArtifactStagingDirectory)/*.nupkg | foreach {7z x -y -o$counter $_.fullname;$counter++} - workingDirectory: '$(Build.ArtifactStagingDirectory)' - displayName: 'Unzip files to sanitize the PE files' - task: DotNetCoreCLI@2 displayName: 'Build C#' @@ -367,9 +361,6 @@ jobs: arguments: '--configuration RelWithDebInfo -p:Platform="Any CPU" -p:OnnxRuntimeBuildDirectory="$(Build.BinariesDirectory)" -p:OrtPackageId=$(OrtPackageId)' workingDirectory: '$(Build.SourcesDirectory)\csharp' - - task: BinSkim@4 - displayName: 'Run BinSkim' - - task: RoslynAnalyzers@2 displayName: 'Run Roslyn Analyzers' inputs: @@ -386,7 +377,6 @@ jobs: displayName: 'Clean Agent Directories' condition: always() - - template: ../nuget/templates/test_win.yml parameters: AgentPool : 'Win-CPU-2021' diff --git a/tools/ci_build/github/azure-pipelines/templates/c-api-cpu.yml b/tools/ci_build/github/azure-pipelines/templates/c-api-cpu.yml index 764278047e..e21849399b 100644 --- a/tools/ci_build/github/azure-pipelines/templates/c-api-cpu.yml +++ b/tools/ci_build/github/azure-pipelines/templates/c-api-cpu.yml @@ -364,12 +364,10 @@ jobs: dir workingDirectory: '$(Build.BinariesDirectory)/nuget-artifact' displayName: 'List artifacts' - - script: | mklink /D /J models C:\local\models workingDirectory: '$(Build.BinariesDirectory)' displayName: 'Create models link' - - task: NuGetToolInstaller@0 displayName: Use Nuget 5.7.0 inputs: @@ -407,18 +405,19 @@ jobs: configuration: RelWithDebInfo arguments: '--configuration RelWithDebInfo -t:CreatePackage -p:Platform="Any CPU" -p:OnnxRuntimeBuildDirectory="$(Build.BinariesDirectory)" -p:OrtPackageId=$(OrtPackageId) -p:IsReleaseBuild=${{ parameters.IsReleaseBuild }}' workingDirectory: '$(Build.SourcesDirectory)\csharp' - - - task: BatchScript@1 - displayName: 'Bundle Native NuGet and other binaries' + + - task: CopyFiles@2 + displayName: 'Copy nuget packages to: $(Build.ArtifactStagingDirectory)' inputs: - filename: $(Build.SourcesDirectory)\tools\ci_build\github\windows\bundle_dlls.bat - workingFolder: $(Build.BinariesDirectory)\RelWithDebInfo\RelWithDebInfo\nuget-artifacts + SourceFolder: '$(Build.BinariesDirectory)\RelWithDebInfo\RelWithDebInfo' + Contents: '*.nupkg' + TargetFolder: '$(Build.ArtifactStagingDirectory)' - task: CopyFiles@2 displayName: 'Copy nuget packages to: $(Build.ArtifactStagingDirectory)' inputs: - SourceFolder: '$(Build.BinariesDirectory)\RelWithDebInfo\RelWithDebInfo\nuget-artifacts' - Contents: '*.nupkg' + SourceFolder: '$(Build.BinariesDirectory)\RelWithDebInfo\RelWithDebInfo' + Contents: '*.snupkg' TargetFolder: '$(Build.ArtifactStagingDirectory)' - task: CopyFiles@2 @@ -438,7 +437,7 @@ jobs: parameters: NugetPath: '$(Build.ArtifactStagingDirectory)' NugetPackage: 'Microsoft.ML.OnnxRuntime.*nupkg' - PlatformsSupported: 'win-x64,win-x86,linux-x64,osx-x64' + PlatformsSupported: 'win-x64,win-x86,linux-x64,osx.10.13-x64' VerifyNugetSigning: false - task: PublishPipelineArtifact@0 @@ -447,11 +446,6 @@ jobs: artifactName: 'drop-signed-nuget-CPU' targetPath: '$(Build.ArtifactStagingDirectory)' - - powershell: | - $counter = 0 - Get-ChildItem -Path $(Build.ArtifactStagingDirectory)/*.nupkg | foreach {7z x -y -o$counter $_.fullname;$counter++} - workingDirectory: '$(Build.ArtifactStagingDirectory)' - displayName: 'Unzip files to sanitize the PE files' - task: DotNetCoreCLI@2 displayName: 'Build C#' @@ -463,9 +457,6 @@ jobs: arguments: '--configuration RelWithDebInfo -p:Platform="Any CPU" -p:OnnxRuntimeBuildDirectory="$(Build.BinariesDirectory)" -p:OrtPackageId=$(OrtPackageId)' workingDirectory: '$(Build.SourcesDirectory)\csharp' - - task: BinSkim@4 - displayName: 'Run BinSkim' - - task: RoslynAnalyzers@2 displayName: 'Run Roslyn Analyzers' inputs: @@ -482,7 +473,6 @@ jobs: displayName: 'Clean Agent Directories' condition: always() - - template: ../nuget/templates/test_win.yml parameters: AgentPool : 'Win-CPU-2021' diff --git a/tools/ci_build/github/windows/bundle_dlls.bat b/tools/ci_build/github/windows/bundle_dlls.bat deleted file mode 100644 index f5603f7f33..0000000000 --- a/tools/ci_build/github/windows/bundle_dlls.bat +++ /dev/null @@ -1,28 +0,0 @@ -REM Copyright (c) Microsoft Corporation. All rights reserved. -REM Licensed under the MIT License. - -REM for available runtime identifiers, see https://github.com/dotnet/corefx/blob/release/3.1/pkg/Microsoft.NETCore.Platforms/runtime.json -set PATH=%CD%;%PATH% -SETLOCAL EnableDelayedExpansion -FOR /R %%i IN (*.nupkg) do ( - set filename=%%~ni - IF NOT "!filename:~25,7!"=="Managed" ( - mkdir runtimes\win-x86\native - mkdir runtimes\win10-arm\native - mkdir runtimes\win10-arm64\native - mkdir runtimes\linux-x64\native - mkdir runtimes\osx-x64\native - move onnxruntime-win-x86\lib\onnxruntime.dll runtimes\win-x86\native\onnxruntime.dll - move onnxruntime-win-x86\lib\onnxruntime.lib runtimes\win-x86\native\onnxruntime.lib - move onnxruntime-win-x86\lib\onnxruntime.pdb runtimes\win-x86\native\onnxruntime.pdb - move onnxruntime-win-arm64\lib\onnxruntime.dll runtimes\win10-arm64\native\onnxruntime.dll - move onnxruntime-win-arm64\lib\onnxruntime.lib runtimes\win10-arm64\native\onnxruntime.lib - move onnxruntime-win-arm64\lib\onnxruntime.pdb runtimes\win10-arm64\native\onnxruntime.pdb - move onnxruntime-win-arm\lib\onnxruntime.dll runtimes\win10-arm\native\onnxruntime.dll - move onnxruntime-win-arm\lib\onnxruntime.lib runtimes\win10-arm\native\onnxruntime.lib - move onnxruntime-win-arm\lib\onnxruntime.pdb runtimes\win10-arm\native\onnxruntime.pdb - move onnxruntime-linux-x64\lib\libonnxruntime.so.1* runtimes\linux-x64\native\libonnxruntime.so - move onnxruntime-osx-x64\lib\libonnxruntime.*.dylib runtimes\osx-x64\native\libonnxruntime.dylib - 7z a %%~ni.nupkg runtimes - ) -) \ No newline at end of file diff --git a/tools/ci_build/github/windows/extract_nuget_files.ps1 b/tools/ci_build/github/windows/extract_nuget_files.ps1 index 7a18ee4715..9c6153aea4 100644 --- a/tools/ci_build/github/windows/extract_nuget_files.ps1 +++ b/tools/ci_build/github/windows/extract_nuget_files.ps1 @@ -1,6 +1,7 @@ # Copyright (c) Microsoft Corporation. All rights reserved. # Licensed under the MIT License. +# This file is used by Zip-Nuget Packaging NoContribOps Pipeline,Zip-Nuget-Java Packaging Pipeline New-Item -Path $Env:BUILD_BINARIESDIRECTORY\RelWithDebInfo\RelWithDebInfo\nuget-artifacts -ItemType directory Get-ChildItem $Env:BUILD_BINARIESDIRECTORY\nuget-artifact -Filter *.zip | @@ -30,10 +31,13 @@ New-Item -Path $Env:BUILD_BINARIESDIRECTORY\RelWithDebInfo\external\protobuf\cma Copy-Item -Path $Env:BUILD_BINARIESDIRECTORY\RelWithDebInfo\RelWithDebInfo\nuget-artifacts\onnxruntime-win-x64-*\lib\* -Destination $Env:BUILD_BINARIESDIRECTORY\RelWithDebInfo\RelWithDebInfo Copy-Item -Path $Env:BUILD_BINARIESDIRECTORY\extra-artifact\protoc.exe $Env:BUILD_BINARIESDIRECTORY\RelWithDebInfo\external\protobuf\cmake\RelWithDebInfo -Get-ChildItem $Env:BUILD_BINARIESDIRECTORY\RelWithDebInfo\RelWithDebInfo\nuget-artifacts\onnxruntime-win-arm-* | Rename-Item -NewName $Env:BUILD_BINARIESDIRECTORY\RelWithDebInfo\RelWithDebInfo\nuget-artifacts\onnxruntime-win-arm -Get-ChildItem $Env:BUILD_BINARIESDIRECTORY\RelWithDebInfo\RelWithDebInfo\nuget-artifacts\onnxruntime-win-arm64-* | Rename-Item -NewName $Env:BUILD_BINARIESDIRECTORY\RelWithDebInfo\RelWithDebInfo\nuget-artifacts\onnxruntime-win-arm64 -Get-ChildItem $Env:BUILD_BINARIESDIRECTORY\RelWithDebInfo\RelWithDebInfo\nuget-artifacts\onnxruntime-win-x86-* | Rename-Item -NewName $Env:BUILD_BINARIESDIRECTORY\RelWithDebInfo\RelWithDebInfo\nuget-artifacts\onnxruntime-win-x86 +$ort_dirs = Get-ChildItem -Path $Env:BUILD_BINARIESDIRECTORY\RelWithDebInfo\RelWithDebInfo\nuget-artifacts\onnxruntime-* -Directory +foreach ($ort_dir in $ort_dirs) +{ + + $dirname = Split-Path -Path $ort_dir -Leaf + $dirname = $dirname.SubString(0,$dirname.LastIndexOf('-')) + Write-Output "Renaming $ort_dir to $dirname" + Rename-Item -Path $ort_dir -NewName $Env:BUILD_BINARIESDIRECTORY\RelWithDebInfo\RelWithDebInfo\nuget-artifacts\$dirname +} -Get-ChildItem $Env:BUILD_BINARIESDIRECTORY\RelWithDebInfo\RelWithDebInfo\nuget-artifacts\onnxruntime-linux-x64-* | Rename-Item -NewName $Env:BUILD_BINARIESDIRECTORY\RelWithDebInfo\RelWithDebInfo\nuget-artifacts\onnxruntime-linux-x64 - -Get-ChildItem $Env:BUILD_BINARIESDIRECTORY\RelWithDebInfo\RelWithDebInfo\nuget-artifacts\onnxruntime-osx-x64-* | Rename-Item -NewName $Env:BUILD_BINARIESDIRECTORY\RelWithDebInfo\RelWithDebInfo\nuget-artifacts\onnxruntime-osx-x64 \ No newline at end of file diff --git a/tools/ci_build/github/windows/extract_nuget_files_gpu.ps1 b/tools/ci_build/github/windows/extract_nuget_files_gpu.ps1 index 6d1389d077..b14be27fba 100644 --- a/tools/ci_build/github/windows/extract_nuget_files_gpu.ps1 +++ b/tools/ci_build/github/windows/extract_nuget_files_gpu.ps1 @@ -1,6 +1,7 @@ # Copyright (c) Microsoft Corporation. All rights reserved. # Licensed under the MIT License. +# This file is used by Zip-Nuget-Java Packaging Pipeline New-Item -Path $Env:BUILD_BINARIESDIRECTORY\RelWithDebInfo\RelWithDebInfo\nuget-artifacts -ItemType directory Get-ChildItem $Env:BUILD_BINARIESDIRECTORY\nuget-artifact -Filter *.zip | @@ -30,7 +31,12 @@ New-Item -Path $Env:BUILD_BINARIESDIRECTORY\RelWithDebInfo\external\protobuf\cma Copy-Item -Path $Env:BUILD_BINARIESDIRECTORY\RelWithDebInfo\RelWithDebInfo\nuget-artifacts\onnxruntime-win-x64-cuda-*\lib\* -Destination $Env:BUILD_BINARIESDIRECTORY\RelWithDebInfo\RelWithDebInfo Copy-Item -Path $Env:BUILD_BINARIESDIRECTORY\extra-artifact\protoc.exe $Env:BUILD_BINARIESDIRECTORY\RelWithDebInfo\external\protobuf\cmake\RelWithDebInfo +$ort_dirs = Get-ChildItem -Path $Env:BUILD_BINARIESDIRECTORY\RelWithDebInfo\RelWithDebInfo\nuget-artifacts\onnxruntime-* -Directory +foreach ($ort_dir in $ort_dirs) +{ + $dirname = Split-Path -Path $ort_dir -Leaf + $dirname = $dirname.SubString(0,$dirname.LastIndexOf('-')) + Write-Output "Renaming $ort_dir to $dirname" + Rename-Item -Path $ort_dir -NewName $Env:BUILD_BINARIESDIRECTORY\RelWithDebInfo\RelWithDebInfo\nuget-artifacts\$dirname +} -Get-ChildItem $Env:BUILD_BINARIESDIRECTORY\RelWithDebInfo\RelWithDebInfo\nuget-artifacts | Where-Object { $_.Name -match 'onnxruntime-linux-x64-cuda-\d{1,}\.\d{1,}\.\d{1,}$' } | Rename-Item -NewName $Env:BUILD_BINARIESDIRECTORY\RelWithDebInfo\RelWithDebInfo\nuget-artifacts\onnxruntime-linux-x64-gpu -Get-ChildItem $Env:BUILD_BINARIESDIRECTORY\RelWithDebInfo\RelWithDebInfo\nuget-artifacts\onnxruntime-linux-x64-tensorrt-* | Rename-Item -NewName $Env:BUILD_BINARIESDIRECTORY\RelWithDebInfo\RelWithDebInfo\nuget-artifacts\onnxruntime-linux-x64-tensorrt -Get-ChildItem $Env:BUILD_BINARIESDIRECTORY\RelWithDebInfo\RelWithDebInfo\nuget-artifacts\onnxruntime-win-x64-tensorrt-* | Rename-Item -NewName $Env:BUILD_BINARIESDIRECTORY\RelWithDebInfo\RelWithDebInfo\nuget-artifacts\onnxruntime-win-x64-tensorrt diff --git a/tools/nuget/generate_nuspec_for_native_nuget.py b/tools/nuget/generate_nuspec_for_native_nuget.py index aafeb1f78a..49528866eb 100644 --- a/tools/nuget/generate_nuspec_for_native_nuget.py +++ b/tools/nuget/generate_nuspec_for_native_nuget.py @@ -4,6 +4,73 @@ import argparse import sys import os +import re +from pathlib import Path + + +# What does the names of our C API tarball/zip files looks like +# os: win, linux, osx +# ep: cuda, tensorrt, None +def get_package_name(os, cpu_arch, ep): + pkg_name = None + if os == 'win': + pkg_name = "onnxruntime-win-" + pkg_name += cpu_arch + if ep == 'cuda': + pkg_name += "-cuda" + elif ep == 'tensorrt': + pkg_name += "-tensorrt" + elif os == 'linux': + pkg_name = "onnxruntime-linux-" + pkg_name += cpu_arch + if ep == 'cuda': + pkg_name += "-cuda" + elif ep == 'tensorrt': + pkg_name += "-tensorrt" + elif os == 'osx': + pkg_name = "onnxruntime-osx-" + cpu_arch + return pkg_name + + +# Currently we take onnxruntime_providers_cuda from CUDA build +# And onnxruntime, onnxruntime_providers_shared and onnxruntime_providers_tensorrt from tensorrt build +def is_this_file_needed(ep, filename): + return (ep != 'cuda' or 'cuda' in filename) and (ep != 'tensorrt' or 'cuda' not in filename) + + +# nuget_artifacts_dir: the directory with uncompressed C API tarball/zip files +# ep: cuda, tensorrt, None +# files_list: a list of xml string pieces to append +# This function has no return value. It updates files_list directly +def generate_file_list_for_ep(nuget_artifacts_dir, ep, files_list): + for child in nuget_artifacts_dir.iterdir(): + for cpu_arch in ['x86', 'x64', 'arm', 'arm64']: + if child.name == get_package_name('win', cpu_arch, ep): + child = child / 'lib' + for child_file in child.iterdir(): + if child_file.suffix in ['.dll', '.pdb', '.lib'] and is_this_file_needed(ep, child_file.name): + files_list.append('' % cpu_arch) + for cpu_arch in ['x64', 'arm64']: + if child.name == get_package_name('osx', cpu_arch, ep): + child = child / 'lib' + for child_file in child.iterdir(): + # Check if the file has digits like onnxruntime.1.8.0.dylib. We can skip such things + is_versioned_dylib = re.match(r'.*[\.\d+]+\.dylib$', child_file.name) + if child_file.is_file() and child_file.suffix == '.dylib' and not is_versioned_dylib: + files_list.append('' % cpu_arch) + for cpu_arch in ['x64', 'aarch64']: + if child.name == get_package_name('linux', cpu_arch, ep): + child = child / 'lib' + if cpu_arch == 'x86_64': + cpu_arch = 'x64' + for child_file in child.iterdir(): + if not child_file.is_file(): + continue + if child_file.suffix == '.so' and is_this_file_needed(ep, child_file.name): + files_list.append('' % cpu_arch) def parse_arguments(): @@ -302,16 +369,30 @@ def generate_files(list, args): files_list.append('') + is_ado_packaging_build = False # Process runtimes # Process onnxruntime import lib, dll, and pdb if is_windows_build: - files_list.append('') - files_list.append('') - if os.path.exists(os.path.join(args.native_build_path, 'onnxruntime.pdb')): - files_list.append('') + files_list.append('') + if os.path.exists(os.path.join(args.native_build_path, 'onnxruntime.pdb')): + files_list.append('') else: files_list.append('') # Process execution providers which are built as shared libs - if args.execution_provider == "tensorrt": + if args.execution_provider == "tensorrt" and not is_ado_packaging_build: files_list.append('') @@ -362,7 +443,7 @@ def generate_files(list, args): nuget_dependencies['openvino_ep_shared_lib']) + runtimes_target + args.target_architecture + '\\native" />') - if args.execution_provider == "cuda" or is_cuda_gpu_package: + if args.execution_provider == "cuda" or is_cuda_gpu_package and not is_ado_packaging_build: files_list.append('')