-
Story
-
Resolution: Done
-
Undefined
-
None
-
None
-
False
-
-
False
-
-
Package 'nvidia-riva-client' does not build as-is via the AIPCC self-service pipeline and requires builder repository onboarding.
Build Failure Summary
Now I have all the information needed to provide the analysis.
—
Root Cause Analysis: `nvidia-riva-client` Build Failure
What Happened
The build failed at the dependency resolution stage before any compilation was attempted. The critical error is:
19:57:13 ERROR nvidia-riva-client: Unable to resolve requirement specifier nvidia-riva-client with constraint None using PyPI resolver (searching at https://pypi.org/simple): found no match for nvidia-riva-client using PyPI resolver (searching at https://pypi.org/simple), searching for sdists, ignoring pre-release versions
Root Cause
`nvidia-riva-client` publishes only wheels to PyPI — no source distributions (sdists) exist for any version. The build system (fromager) is running in sdist-only mode (`sdist-only (fast mode), getting metadata from sdists`), which means it exclusively searches for `.tar.gz` source distributions to build packages from source. Since NVIDIA has never published an sdist for this package (across all versions from `0.0.3` through `2.24.0`), the resolver finds zero candidates and fails immediately.
Why Source-Based Building Is Still Possible
The package's source code is available on GitHub at *https://github.com/nvidia-riva/python-clients*. This is a pure-Python gRPC client library (not a compiled native extension), so building from source should be straightforward.
Potential Fixes
- Configure fromager with a source override pointing to the GitHub repository (`nvidia-riva/python-clients`) so it can fetch and build the sdist from source rather than relying on PyPI's sdist index. This is the standard approach when a package only ships wheels on PyPI but has publicly available source code.
- Generate an sdist from the source repository and host it in the internal package server before running the bootstrap. Cloning the repo at the desired tag and running `python -m build --sdist` would produce the missing artifact.
- As a last resort, some versions on PyPI use non-PEP 440 version strings (e.g., `2.9.0-1`, `2.18.0-1`) which may also be filtered out as pre-release. Ensure the version targeted uses a clean PEP 440 version like `2.24.0`.
Packaging Analysis Summary
Executive Summary: nvidia-riva-client Packaging Analysis
nvidia-riva-client is a pure-Python gRPC client library for NVIDIA's Riva Speech AI platform, required as a hard dependency of Garak. The package produces a noarch wheel (
py3-none-any
) with no native compilation required. However, the build process has a moderate complexity step: it compiles Protocol Buffer (
.proto
) definitions from a git submodule (
nvidia-riva/common
) into Python code using
grpc_tools.protoc
. A source build from the GitHub repository at tag
r2.16.0
has been verified successful, producing a wheel that matches the PyPI-distributed artifact. The package is licensed under MIT, fully compatible with Red Hat redistribution.
CRITICAL BLOCKER: The JIRA ticket AIPCC-10994 references version 0.16.0, which does not exist on PyPI. The correct version is 2.16.0, as confirmed by Garak's
pyproject.toml
which pins
nvidia-riva-client==2.16.0
. This version discrepancy must be corrected before proceeding. Additionally, no sdist is published to PyPI for any version — the source must come from the GitHub repository at
https://github.com/nvidia-riva/python-clients
(tag
r2.16.0
).
Version 2.16.0 is advantageous for RPM packaging because its runtime dependencies (
setuptools>=65
,
grpcio-tools
) use relaxed version constraints, unlike later versions (2.17.0+) which aggressively pin exact versions and introduce ecosystem conflicts. The build requires
grpcio-tools
as a build dependency and
git
to initialize the
common
submodule containing the
.proto
files. For RPM packaging, the submodule content should be bundled into the source tarball to avoid network access during build.
Key Actions
- Immediate: Update JIRA ticket AIPCC-10994 to reference version 2.16.0 instead of 0.16.0
- Source: Use
https://github.com/nvidia-riva/python-clients/archive/refs/tags/r2.16.0.tar.gzas Source0, and bundle the
common
submodule content as Source1
- BuildRequires:
python3-grpcio-tools
,
python3-setuptools
- Requires:
python3-setuptools >= 65
,
python3-grpcio-tools
- Architecture:
noarch
— no platform-specific build steps needed despite the ticket specifying x86_64
- blocks
-
AIPCC-11007 Add nvidia-riva-client into the RHAI pipeline onboarding collection
-
- In Progress
-
- mentioned on