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('')