Repository navigation
Fix OpenVINO provider info namespace for Python builds - #33327
Mustapha Jaber (mustjab) merged 1 commit into
Conversation
There was a problem hiding this comment.
🟢 Approval recommended
The focused declaration fix is correct and has targeted regression coverage.
0 open findings
What changed in this PR
Fixes the OpenVINO provider interface namespace mismatch affecting Python-enabled builds.
Changes:
- Moves the OpenVINO interface declaration to global scope.
- Strengthens the optional-provider probe’s compile-time namespace check.
| File | Description |
|---|---|
onnxruntime/core/session/provider_bridge_ort.h |
Corrects the interface declaration scope. |
onnxruntime/test/shared_lib/optional_provider_probe_test.cc |
Explicitly validates the global interface type. |
🧠 Review effort: Balanced
💡 Configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
|
Hi Mustapha Jaber (@mustjab), thanks a lot. Let me give it a try tomorrow to confirm it on my end. |
|
Mustapha Jaber (@mustjab) I can confirm that the issue is fixed on my end. Once again thanks a lot for the quick turnaround. |
Thanks for confirmation, will try to land this today. |
### Description <!-- Describe your changes. --> Prepare the ONNX Runtime 1.31.1 patch release targeting `rel-1.31.1`: - Bump native, Python, and JavaScript package versions from 1.31.0 to 1.31.1, including lockfiles, Node.js native-package install metadata, API version assertions, and the Python release-notes link. - Backport the OpenVINO provider-info namespace fix from [#33327](#33327): move the forward declaration to the global namespace and explicitly qualify the type in the optional-provider probe test. - Backport the WASM Debug external-data test fix from [#33226](#33226): skip file-backed cases that require `Module.MountedFiles`, while retaining buffer-destination coverage. ### Motivation and Context <!-- - Why is this change required? What problem does it solve? - If it fixes an open issue, please link to the issue here. --> Keep release metadata aligned for 1.31.1 and include targeted fixes for OpenVINO-enabled Python builds and WASM Debug tests. The OpenVINO change corrects a mismatched type declaration; the WASM changes avoid external-data filesystem paths unsupported by the test module without changing runtime behavior. --------- Co-authored-by: Mustapha Jaber <mustjab@users.noreply.github.com> Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com> Co-authored-by: tianleiwu <30328909+tianleiwu@users.noreply.github.com>
### Description <!-- Describe your changes. --> This cherry-picks the following commits for the release: * #32610 * #32633 * #32641 * #32611 * #32609 * #32607 * #32679 * #32681 * #32666 CI fixes: * #32559 (`8ec7981a7439546a54196b9cbc777ae5de708b6b`): guard FP8 XQA test cases by GPU compute capability. The Windows CUDA runner is an SM86 A10, while FP8 XQA requires SM89 or SM90+. INT4/INT8 XQA coverage remains enabled on supported SM80+ devices. This fixes the two FP8 dispatch assertions without changing product behavior. * Raise the Android minimal baseline binary-size threshold by 1 KiB, from 1,589,248 to 1,590,272 bytes (release branch only). CI reports a section total of 1,590,022 bytes, exceeding the previous threshold by 774 bytes. The adjusted threshold leaves 250 bytes of headroom. * #32676, then #33489: rename the old `A10-Test` image and remove the unnecessary image override, in upstream order. * #33492: backport the scale-set runner migration across the release branch's 41 affected workflows. The Linux CUDA, CUDA Plugin, and TensorRT test jobs now use `ort-github-linux-6-a10-scus-ss`. Their previous retries were cancelled by `1es-resource-management[bot]` before any steps executed. The first ten cherry-picks, plus #32676 and #33489, applied cleanly from the original mainline commits, with source commit provenance preserved. #32607 includes the full mainline fix and regression tests rather than the reduced 1.28.3 backport. #33492 required conflict resolution because the release branch has an older workflow layout: * Preserve the existing Linux CI and Linux WebGPU job sets; do not introduce main-only no-exceptions or static-plugin jobs. * Leave `windows_arm64_python.yml` absent. It was introduced after 1.30 branched by #32791; its runner migration does not require adding that workflow to this release. * Preserve Windows WebGPU's combined build/test jobs and their check names, keeping them on the new GPU scale set rather than importing main's split build/test topology. The build-only minimal Edge job uses the new CPU scale set. ### Motivation and Context <!-- - Why is this change required? What problem does it solve? - If it fixes an open issue, please link to the issue here. --> Bring the product fixes from #32806 into ORT 1.30.1, address the Windows CUDA test and Android size-gate failures, and migrate CI runner selection to unblock the cancelled GPU jobs. The merged EP API version correction from #33525 was brought in by merging the updated `rel-1.30.1` base. The `uuid-dev` CI fix in #32491 was already present in the 1.30 base and is not duplicated. The OpenVINO changes in #33112 and #33327 are intentionally excluded: the namespace regression fixed by #33327 was introduced by #33112, and neither change is present in the 1.30 base. Validation: * All nine original product cherry-pick patch IDs were verified against their mainline commits; the additional #32559 patch ID also matches upstream. * The upstream `test_fp8_xqa_cuda_capability` regression passed in an isolated standard-library harness using mocked SM86, SM89, and SM90 capabilities. Additional no-CUDA and external-runner cases passed. * Python syntax and Android threshold consistency/arithmetic checks passed. * `git diff --check 3b0f46f HEAD` passed. * All 41 migrated workflow YAML files parse. Structural comparisons against the pre-migration release workflows confirm that only runner labels, caller pool names, and the reusable pool-input description changed; job sets, steps, triggers, permissions, matrices, and build flags are preserved. * All 13 callers of the reusable Linux build workflow use scale-set pool names; all three previously cancelled GPU test jobs use the new A10 scale set. * The Android release-specific size threshold remains 1,590,272 bytes. * The full helper pytest invocation was not runnable because pytest is not installed in the local virtual environment. No local GPU execution or Android rebuild was performed; CI will validate the integrated changes. --------- Co-authored-by: Wei Wang <wei4.wang@intel.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: shiyi <shiyi.zou@intel.com> Co-authored-by: Bin Miao <bin.miao@intel.com> Co-authored-by: Bryan B <bryan.bernhart@intel.com> Co-authored-by: Xiaofei Han <xiaofeihan@microsoft.com> Co-authored-by: Aditya Rastogi <adityar@ntdev.microsoft.com> Co-authored-by: Tianlei Wu <tlwu@microsoft.com> Co-authored-by: eserscor <erscor@microsoft.com> Copilot-Session: 3eb3fc9b-6147-4706-b7ad-47bb3476377b
Description
Fixes #33325.
ProviderInfo_OpenVINOis a global interface declared by the OpenVINO provider factory header. #33112 added a forward declaration insidenamespace onnxruntime, creating a different type. That conflicts with the existing Python binding declaration ofTryGetProviderInfo_OpenVINOand causes MSVC C2556 when building with OpenVINO and Python enabled.Move the interface forward declaration to global scope while retaining the function in
namespace onnxruntime. Make the existing optional-provider probe test use an explicitly global interface pointer so a namespace mismatch fails compilation.Validation
git diff --checkpassed.The full OpenVINO Python wheel build was not run; no OpenVINO SDK was installed for this validation.